C++ 中的全局常量

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