我的代码非常大,但我会尽可能地尽量减少它。为什么全局定义的静态变量被重置?
基本上我想定义一个字符串,只修改一个地方(我的主),然后在我的整个程序中读取。
我的defines.h包含在任何地方,所以在那里我定义。
static std::string MAINLOG = "RANDOMNES";
在我的主要功能我做的:
for (int i = 0; i < files.size(); i++){
// Do stuff
prepDbugDir(); // This sets MAINLOG to "CORRECT_VALUE"
std::cout << "Before " << MAINLOG << std::endl;
// Call a class function whose includes include my defines.h
std::cout << "After " << MAINLOG << std::endl;
}
和打印出我的文件是
Before CORRECT_VALUE
RANDOMNESS
After CORRECT_VALUE
所以我的问题是为什么,我怎样才能获得值为保持在我的课堂内。
您是否将您的程序信息分成几个* .a或* .o?看起来由于您将编程分割为多个目标文件,因此存在多个MAINLOG副本。 –
编译时,是的。如果这是问题,有没有办法解决这个问题? – aarelovich
尝试将MAINLOG的声明放入标题中,并且只在包含标题(可能为defines.cpp)的单个.cpp文件中定义一次。 – Baldrick