C++ 全局常数

更新:2007 年 11 月

C++ 全局常数具有静态链接。这与 C 不同。如果试图在多个文件中使用 C++ 全局常数,将得到无法解析的外部错误。编译器优化掉全局常数,不留下为变量保留的空间。

解决此错误的一种方法是将常数初始化包含在头文件中,并在需要时将该头包含在 CPP 文件中,就像它是函数原型一样。另一种可能的方法是使变量成为非常数,并在访问变量时使用常数引用。

下面的示例生成 C2019:

// global_constants.cpp
// LNK2019 expected
void test(void);
const int lnktest1 = 0;

int main() {
   test();
}

然后,

// global_constants_2.cpp
// compile with: global_constants.cpp
extern int lnktest1;

void test() {
  int i = lnktest1;   // LNK2019
}

请参见

参考

链接器工具错误 LNK2019