Возможный дубликат:
Почему const подразумевает внутреннюю связь в C ++, а не в C?
Если у меня есть следующее:
a.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 ++ константы в области видимости файлов по умолчанию являются константами времени компиляции.
Других решений пока нет …