可能重复:
Why does const imply internal linkage in C++, when it doesn’t in C?
如果我有以下内容:
a.cpp:
const int ArrayOfInts[] = {1, 2, 3, 4, 5};
b.cpp:
extern const int ArrayOfInts[];
void SomeFunc()
{
int a = ArrayOfInts[0];
}
链接器抱怨来自b.obj的ArrayOfInts未解析。删除const限定符可使链接成功。任何想法为什么会失败?
感谢。
答案 0 :(得分:0)
当编译器编译b.cpp
时,就其所知,ArrayOfInts[0]
的值可以是任何值。所以它不是编译时常量。在C ++中,默认情况下,文件范围的常量是编译时常量。