реклама на сайте
подробности

 
 
> размещение строк во flash
BioWolf2000
сообщение Jun 11 2007, 15:13
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 89
Регистрация: 11-01-05
Из: Беларусь, Минск
Пользователь №: 1 897



в GCC есть дефайн PSTR
описан так #define PSTR(s) ({static char __c[] PROGMEM = (s); &__c[0];})
легко использовать к примеру так- putLCD_P(PSTR("TEST"));

Как такое сделать в IAR?


--------------------
ex740104/103 БГУИР
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
KRS
сообщение Jun 11 2007, 20:40
Сообщение #2


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



К сожалению в IAR так не сделать, потому что define не может возвращать значение, это расширение GCC.
В IAR это макрос должен был бы выглядеть так
#define PSTR(s) ({static __flash const char __c[]= (s); &__c[0];})
но работать он не будет sad.gif
Здесь часто поднимались подобные вопросы, но решения я еще не видел.
Приходится руками описывать переменную
static __flash const char[] ....
Или можно определить макрос вызова функции где первый параметр строка во флеше
#define p_call(f,s,...) {static __flash const char __c[]= (s); f(__c,__VA_ARGS__); }
Вот только если у функции один параметр строка - то этот макрос будет работать с ошибками, нужен такой вариант
#define p_call1(f,s) {static __flash const char __c[]= (s); f(__c); }
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 12:44
Рейтинг@Mail.ru


Страница сгенерированна за 0.01395 секунд с 7
ELECTRONIX ©2004-2016