[英]C++ Global variable declaration
我想要做的只是在头文件中定义一个变量并在两个不同的 cpp 文件中使用它,而无需在每次包含该头文件时重新定义该变量
这是我尝试的方法:
变量.h
#ifndef VARIABLES_H // header guards
#define VARIABLES_H
static bool bShouldRegister;
#endif
(我也试过 extern 但没有任何改变)
在一个 cpp 文件中,我给它一个值::bShouldRegister = true
或bShouldRegister = 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;
如果您可以使用 C++17,请考虑使用内联变量:
// in a header file
inline bool bShouldRegister = true;
请参阅内联变量如何工作? 想要查询更多的信息。
更像C++ 的方法是使用类成员,在语法上由static
关键字指示。 类成员变量具有隐式external
链接。
#ifndef VARIABLES_H
#define VARIABLES_H
class RegUtil {
public:
static bool bShouldRegister;
};
#endif
在您的 cpp 文件之一(可能是variables.cpp
)中,您必须定义此类成员:
#include "variables.h"
bool RegUtil::bShouldRegister;
您需要在以下模块之一中定义变量:
bool bShouldRegister;
然后在标头中将其声明为extern
(不是static
!):
extern bool bShouldRegister;
这里需要在一个类中定义 bool bShouldRegister。 你的头文件应该是这样的。
#ifndef VARIABLES_H // header guards
#define VARIABLES_H
class abc{
public:
bool bShouldRegister;
abc();
#endif
现在在 abc 类的构造函数中的 cpp 文件中初始化bShouldRegister变量,然后使用类的对象在第二个 cpp 文件中使用此变量。 你会得到你的消息框。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.