ошибки компилятора — c ++ const conundrum

У меня есть следующий код в 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

Почему это происходит, ведь у меня есть РАЗМЕР, который действительно является константой?

0

Решение

Переехать const unsigned int SIZE = 10; в заголовок и удали внешнюю линию. С простым значением const int безопасно и безопасно объявить его непосредственно в заголовке.

2

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

const неявно staticвам нужен extern даже на SIZE определение. включаемый файл не будет ссылаться, потому что он ищет const unsigned int SIZE с внешней связью.

0

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