Нужно хранить строки логических параметров для вывода их как значение на ЖКД.
наиболее подходящим способом мне показалось создание массива указателей на строки.
например так:
Код
char *EnumMes[] = {"Вкл\0Выкл","Авто\0Ручн","Зан\0Ocв"};
но такое размещение строк производится в ОЗУ а хотелось бы во FLASH, и вот тут проблема:
Код
char __flash *EnumMes[] = {"Вкл\0Выкл","Авто\0Ручн","Зан\0Ocв"};
Error: a value of type "char *" cannot be used to initialize an entity of type "char __flash *"
т.е. указатель на Flash не может указать на данные в SRAM которыми, видимо, являются мои строки.
Включение опции --string_literals_in_flash ситуацию не изменило

пришлось применить запись типа:
Код
__flash char mess1[] = "Вкл\0Выкл"; // Точность параметра=10
__flash char mess2[] = "Авто\0Ручн"; // Точность параметра=11
__flash char mess3[] = "Зан\0Ocв"; // Точность параметра=12
char __flash *EnumMes[] = {mess1, mess2, mess3};
Вопрос 1-й - Такая запись не очень удобна. Можно ли это сделать более лаконично ?
Далее полученный массив указателей на Flash строки можно тоже запихнуть во flash (хотя наверное доступ к нему из-за этого увеличиться :-) )
Код
... __flash char __flash *EnumMes[] = {mess1, mess2, mess3};
А теперь для передачи его в функцию как аргумента обьявляю указатель на массив указателей, но

Код
char __flash *GetEnumMes(char __flash **EnumMess, char dPrm, char fPrm)
Error: argument of type "char __flash *__flash *" is incompatible with parameter of type "char __flash **"
Вопрос 2-й - как правильно передать его функции, если вообще возможно ?
Сообщение отредактировал &-rey - Jan 16 2006, 07:31