внешний константный массив не связывает

Возможный дубликат:
Почему 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 делает ссылку успешной. Есть идеи, почему это не удается?

Благодарю.

2

Решение

Когда компилятор компилируется b.cppНасколько он знает, значение ArrayOfInts[0] может быть что угодно. Так что это не константа времени компиляции. В C ++ константы в области видимости файлов по умолчанию являются константами времени компиляции.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]