У меня есть следующий код в 3 файлах:
Defines.h
#ifndef Defines_h
extern const unsigned int SIZE;
#endif
Defines.cpp
#include "Defines.h"
const unsigned int SIZE = 10;
main.cpp
#include "Defines.h"
int main()
{
int x[SIZE] = {0};
}
При компиляции я получаю ошибку в строке определения массива как:
ошибка C2057: ожидаемое постоянное выражение и
C2466: невозможно выделить массив постоянного размера 0
Почему это происходит, ведь у меня есть РАЗМЕР, который действительно является константой?
Переехать const unsigned int SIZE = 10;
в заголовок и удали внешнюю линию. С простым значением const int безопасно и безопасно объявить его непосредственно в заголовке.
const
неявно static
вам нужен extern
даже на SIZE
определение. включаемый файл не будет ссылаться, потому что он ищет const unsigned int SIZE
с внешней связью.