Цитата(zltigo @ Jul 15 2015, 17:08)

Более удивителен вариант, что СЧИТАЕТ. Для Си компилятора сие совершенно удивительно. Для С++ там уже немного своя жизнь с закидонами.
Спасибо, вы ответили на мой вопрос.Я сейчас только сообразил что для AVR и ARM проекты действительно были на плюсах. ОК,сделал через define, все работает.
Но для окончательного просветления сознания - в чем разница const C и С++. Насколько я знаю, константность в плюсах можно отменить, а в С это навсегда.И я считал .что строки
#define variable (value)
и FLASH const variable = value;
должны компилироваться компилятором что в режиме С, что в режиме С++ в одинаковый код и трактоваться
в обоих случаях как константы.Почему не так?
Цитата(SSerge @ Jul 15 2015, 19:37)

Конструкция с объявлением массива, у которого в качестве размера указана переменная или выражение в С допустима, но в общем случае такой массив будет создан во время выполнения, посредством выделения памяти из кучи.
IAR для 8051 даже позволяет такое делать если в настройках выбрать С99 и поставить галку Allow VLA, но только для локальных массивов, объявленных внутри функции.
В любом случае для 8051 подобные излишества скорее вредны чем полезны.
А чего-это он будет выделен динамически, если это глобальный массив и никаких malloc и близко нет.
Галки С99 и Allow VLA стоят изначально и не помогают.
О,нашел
CLIB does not support any C99 functionality. For example, complex numbers and
variable length arrays are not supported.