extern const数组没有链接

时间:2012-11-14 12:35:19

标签: c++ arrays const extern

  

可能重复:
  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限定符可使链接成功。任何想法为什么会失败?

感谢。

1 个答案:

答案 0 :(得分:0)

当编译器编译b.cpp时,就其所知,ArrayOfInts[0]的值可以是任何值。所以它不是编译时常量。在C ++中,默认情况下,文件范围的常量是编译时常量。