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
}