C++ 全局变量声明

标签 c++ variables global-variables


我想要做的只是在头文件中定义一个变量,并在两个不同的 cpp 文件上使用它,而无需在每次包含该头文件时重新定义该变量
这是我的尝试:

变量.h

#ifndef VARIABLES_H // header guards
#define VARIABLES_H

static bool bShouldRegister;

#endif

(我也尝试了 extern,但没有任何改变)

在一个 cpp 文件中,我给它一个值 ::bShouldRegister = truebShouldRegister = true;

在我的另一个 cpp 文件中,我通过创建一个线程并在循环中检查它的值来检查它的值(是的,我的线程函数运行良好)

 while (true)
 {
     if (::bShouldRegister) // Or if (bShouldRegister)
        {
            MessageBox(NULL,"Value Changed","Done",MB_OK|MB_ICONINFORMATION);
        }
  Sleep(100);
 }

是的,MessageBox 永远不会出现(bShouldRegister 永远不会变为真:/)

最佳答案

您应该使用 extern 否则您将在每个翻译单元中使用可能不同的值分隔 bShouldRegister 变量。

把它放在头文件(.h)中:

extern bool bShouldRegister;

把它放在一个实现文件(.cpp)中:

bool bShouldRegister;

另一种更简单的方法是使用 inline 关键字。将变量放在头文件中,如下所示:

inline bool bShouldRegister;

关于C++ 全局变量声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19929681/

相关文章:

c++ - 如何将 UTF-8 格式转换为拉丁语/阿拉伯语,反之亦然?

node.js - Socket.io 客户端特定变量

JavaScript 函数参数与对象方法

c - 如何记录函数的全局依赖性?

regex - 如何在htaccess中引用当前目录

c++ - 如何实现级联相关对象的排序比较器?

c++ - boost::noncopyable 的优点是什么

java - 将数组的名称设置为 String 变量的值

javascript - 有没有办法在不使用全局变量的情况下在 jquery 的 hover() 中的两个函数之间共享变量?

c++ - 程序无法编译,使用带有结构对象的数组