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
}