gpt4 book ai didi

C++ 全局变量声明

转载 作者:IT老高 更新时间:2023-10-28 12:40:19 25 4
gpt4 key购买 nike


我想要做的只是在头文件中定义一个变量,并在两个不同的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com