Я часто путаюсь, когда возвращаюсь в C из-за невозможности создать массив, используя следующий шаблон инициализации ...
const int SOME_ARRAY_SIZE = 6;
const int myArray[SOME_ARRAY_SIZE];
Мое понимание проблемы состоит в том, что оператор const негарантируют постоянство, а лишь утверждают, что значение, на которое указывает SOME_ARRAY_SIZE, не изменится во время выполнения.Но почему компилятор не может предположить, что значение является постоянным во время компиляции?Там написано 6 прямо в исходном коде ...
Я думаю, что мне не хватает чего-то основного в моем фундаментальном понимании C. Кто-то поможет мне здесь.:)
[ОБНОВЛЕНИЕ] Прочитав немного больше о C99 и массивах переменной длины, я думаю, что понимаю это немного лучше.Я пытался создать массив переменной длины - const создает не константу времени компиляции, а константу времени выполнения.Поэтому я инициализировал массив переменной длины, который действителен только в C99 в области функций / блоков.Массив переменной длины в области видимости файла невозможен, так как компилятор не может назначить фиксированный адрес памяти неограниченному массиву. [/ UPDATE]