外部常量阵列不链接

extern const array does not link

本文关键字:链接 阵列 常量 外部      更新时间:2023-10-16

可能的重复项:
为什么 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++ 中,文件范围内的常量默认为编译时常量。