我需要在包含一系列全局变量的多个CPP文件中包含头文件。但我遇到的问题是,我似乎不能使变量可以修改。我可以在头文件或任何cpp文件中初始化变量,但是当我改变它时,它将不会编译或创建超出一个和另一个范围的变量的2个实例。我需要一种方法可以让我改变函数中的值。使用可修改的全局变量C++
例静态的(它创建其他变量的范围变量的实例)
#pragma once
namespace SCE
{
static bool SC_DEBUG = false;
static bool VSYNC = true;
static int SC_LOG_LEVEL = 3;
}
香港专业教育学院还利用“的extern”试过,但我要么不得不与没有运气。
#pragma once
namespace SCE
{
extern bool SC_DEBUG;
extern bool VSYNC;
extern int SC_LOG_LEVEL;
}
编辑 我得到的错误 “错误LNK2001:无法解析的外部符号 ”布尔SCE :: VSYNC“(?VSYNC @ SCE @@ 3_NA)”,当我尝试和编辑变量一旦创建它使用extern。我尝试和编辑它的方式是像这样
int main()
{
SCE::VSYNC = false;
// ...
}
解决方案 我使用的是多项目的设置。因此,发生的事情是'项目B'包含全局变量头文件和cpp,而'项目A'正试图在设置后更改该值。现在出于某种原因,因为'项目A'只是拉动全局变量头文件,所以它获取变量定义但是看不到变量的初始化,从而抛出一些奇怪的错误。
这不是我有问题,我可以精细创建它们,但是当涉及到编辑它们,我得到的错误错误LNK2001:无法解析的外部符号“布尔SCE :: VSYNC“(?VSYNC @ SCE @@ 3_NA) – 0xen
@ 0xen您是否已将所有文件包含到项目中?如果不包含'globals.cpp',则会出现该错误。 –
是的,它编译并运行良好,当我不尝试编辑如上所示在我的编辑变量。 – 0xen