可能的重复项:
为什么 const 在 C++ 中意味着内部链接,而在 C 中却没有?
如果我有以下情况:
答.cpp:
const int ArrayOfInts[] = {1, 2, 3, 4, 5};
b.cpp:
extern const int ArrayOfInts[];
void SomeFunc()
{
int a = ArrayOfInts[0];
}
链接器抱怨 ArrayOfInts 无法从 b.obj 解析。删除 const 限定符可使链接成功。知道为什么会失败吗?
谢谢。
当编译器编译b.cpp
时,据它所知,ArrayOfInts[0]
的值可以是任何东西。所以它不是一个编译时常量。在 C++ 中,文件范围内的常量默认为编译时常量。