Можно ли использовать переменную const для объявления размера массива в C?

Почему следующий код выдает ошибку?

const int a = 5;
int b[a]={1,2,3,4,5};

А также, когда я попытался скомпилировать приведенный выше код без "Const» Ключевое слово, я получил ту же ошибку:

int a = 5; 
int b[a]={1,2,3,4,5};

почему это так? В чем ошибка, которую я здесь делаю?

А также еще один вопрос: когда константы заменяются их действительными значениями в коде, т.е. если я объявляю переменную, скажем: const int x = 5; Я знаю, что в ОЗУ не выделяется память для переменной x, но область постоянной переменной в ПЗУ содержит значение 5 и что x просто заменяется значением 5 везде, где x появляется в коде. Но когда это происходит? Время компиляции? Время загрузки? Время предварительной обработки?

PS: я говорю о Embedded C (работающей на микроконтроллере и т. Д.), А не C, работающей на моем рабочем столе. Поэтому встроенная система обязательно должна иметь ПЗУ (Flash, EEPROM ...). Что будет потом?

Ответы на вопрос(5)

Ваш ответ на вопрос