C++ 命名空间中的全局变量将导致“0”;未定义的引用;

C++ 命名空间中的全局变量将导致“0”;未定义的引用;,c++,namespaces,global-variables,C++,Namespaces,Global Variables,我遇到了无法解释的行为我的问题很简单,我想在名称空间中创建一个全局变量,并在不同的模块(cpp文件)中使用它。我已经读了很多不同的帖子,但是没有答案解决了我的问题 test.hpp namespace Test { extern int var1; extern bool var2; } test.cpp #include "test.hpp" namespace Test { int var1 = 0; bool var2 = false; } test2.

我遇到了无法解释的行为
我的问题很简单,我想在名称空间中创建一个全局变量,并在不同的模块(cpp文件)中使用它。我已经读了很多不同的帖子,但是没有答案解决了我的问题

test.hpp

namespace Test
{
    extern int var1;
    extern bool var2;
}
test.cpp

#include "test.hpp"
namespace Test
{
    int var1 = 0;
    bool var2 = false;
}
test2.cpp

#include "test.hpp"

void somefunc(void)
{
    Test::var1 = 1;
}
链接时出错:

test2.cpp: error: undefined reference to 'Test::var1'
如果有更好的方法,请告诉我,我对此持开放态度


请不要将此问题标记为的重复,我已经阅读了有关Stackoverflow的所有帖子,但他们没有为我解决此问题。

看来您的开发工具或编辑器有问题。尝试创建一个全新的项目,然后重试。(不要删除编辑器的default头文件和项目链接。)

如何编译?对不起,键入错误,您是否“修复”了真实代码中存在的某些键入错误?复制并粘贴复制错误的代码。@66实际代码非常复杂,我试图提取重要的部分,因此实际代码中没有输入错误。
somefunc()
在过去20年左右的时间里,即使在C语言中也是格式错误的。返回类型不是可选的。如果你注意这些事情,你会对你的例子少一些指责。另外,您是否真的验证了这个示例再现了这个问题?您没有编译提取的代码!