【发布时间】:2016-11-09 19:54:42
【问题描述】:
我正在尝试在头文件 global.h 中定义一个全局命名空间。
...
namespace g {
const int g_0 = 0;
const int g_1 = 1;
}
...
当 JUST #include "global.h" 在其他 .cpp 文件中时,编译器会报错
multiple definition of g::g_0
multiple definition of g::g_1
例如,如果我尝试在其他 .cpp 文件中使用 g_0 和 g_1。
int g_0_copy = g::g_0;
int g_1_copy = g::g_1;
它抛出一个错误说:
ISO C++ forbids in-class initialization of non-const static member...
使用命名空间声明全局变量有什么特别之处吗? (在这种情况下我必须使用c ++ 98)
【问题讨论】:
-
如果命名空间在同一个编译单元中包含两次,编译器会报错。否则常量有静态链接。
-
愚蠢的问题。你在标题中包含守卫吗?
-
需要完整代码。关于
in-class initialization的注释告诉我,您向我们展示的内容不止于此。 -
@StoryTeller xD。愚蠢的问题。
标签: c++