我想要做的就是在一个头文件中定义一个变量,并在两个不同的cpp文件上使用它,而不必在每次包含该头文件时重新定义该变量
以下是我尝试的方法:
Variables.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永远不会变成真:/)
发布于 2013-11-12 20:52:13
您必须使用extern
,否则您将在每个转换单元中使用可能具有不同值的独立bShouldRegister
变量。
将其放在一个头文件(.h)中:
extern bool bShouldRegister;
将其放入其中一个实现文件(.cpp)中:
bool bShouldRegister;
发布于 2018-08-28 02:58:40
如果可以使用C++17,请考虑使用内联变量:
// in a header file
inline bool bShouldRegister = true;
有关详细信息,请参阅How do inline variables work?。
发布于 2013-11-12 22:10:37
更多的C++-like way是使用static
关键字在语法上指示的类成员。类成员变量具有隐式external
链接。
#ifndef VARIABLES_H
#define VARIABLES_H
class RegUtil {
public:
static bool bShouldRegister;
};
#endif
在其中一个cpp文件(可能是variables.cpp
)中,您必须定义这个类成员:
#include "variables.h"
bool RegUtil::bShouldRegister;
https://stackoverflow.com/questions/19929681
复制相似问题