Цитата(Xenia @ Dec 14 2014, 10:58)

Оригинальнй вариант
const char Text[];
ей эквивалентен, хотя некоторые компиляторы ее не любят.
Нет, совсем не эквивалентен. В стандарте C99 это называется
flexible array member.
Там не сказано, что будет с таким массивом, если объявить переменную, имеющую тип такой структуры. Поэтому моя версия такова: яр при объявлении переменной игнорирует массив переменной длины и не выделяет для него память, как будто его нет совсем, - то ли поленились реализовать, то ли решили, что стандарт этого не требует (вроде бы так оно и есть). А вот gcc реализовал: выделил память под массив нужной длины и положил туда текст - молодцы, чо. Только в результате получается, что этот код не переносимый.
Цитата(demiurg1978 @ Dec 14 2014, 11:15)

Даже программу не пришлось править. С const IAR выдает ошибки.
Вот так неправильно: "char __flash *Text;"
Вот так правильно: "char *__flash Text;"
Эскизы прикрепленных изображений