Цитата(_Артём_ @ Oct 8 2012, 19:58)

Так не пойдёт:
Код
__flash char s[]="1234";
char __flash * __flash fptr=s;
?
Хм, такой вариант еще не пробовал. Испытаю.
Заранее спасибо.
Цитата(Xenia @ Oct 8 2012, 14:40)

Вы бы лучше людям объяснили, чего вы хотите. А то жалуетесь на компилятор, а сами толком не можете сказать, что вам от него надо.
Если конструкция
Код
__flash char pm[]="Words";
понятна не только компилятору, но и ежу, то чем она вас не устраивает? Вы бы сперва толково объяснили, где (в ОЗУ или во флеше?) вы хотите разместить строку "Words" и где (снова в ОЗУ или во флеше?) хотите разместить на нее указатель. Когда вам предлагают решение, в котором строка находится во флеше, а указатель в ОЗУ, то воротите нос. А что вам нравится?
Существуют 4 возможности:
1) Строка во флеше, указатель в ОЗУ.
2) Строка во флеше, указатель тоже во флеше.
3) Строка в ОЗУ, указатель во флеше.
4) Строка в ОЗУ, указатель тоже в ОЗУ.
Вариант № 1 вы отвергли за понятность ежу, остаются еще 3 варианта. Вас как, по частям дожимать или сами признаетесь, чего вам надо?
Я веду речь за стандарт Си.
У Керниган & Ритчи говорится, в главе 5.5 , что по мимо записи
Код
char pm[] ="Words";
есть еще вариант
char *pm= "Words";
В последнем случае получается не массив, а простая, строковая переменная в памяти с указателем на нее.
Я естественно хочу разместить и указатель и саму строку в flash
Код
__flash char * __flash pm="Words"
в такой записи, компилятор все проглатывает, но слово все равно размещается в ОЗУ.
Если записывать
Код
char __flash * __flash pm="Words"
Компилятор ругается:
Код
Error[Pe144]: a value of type "char *" cannot be used to initialize an entity of type "char __flash *"
Мне просто хочется понять, как делать такое объявление указателя и размещать строку и указатель на нее в flash.