win-avr Řetězce ve FALSH a warning

Petr Stehlik petr.stehlik@atlas.cz
Sobota Květen 2 11:02:13 CEST 2009


Jak správně nadefinovat řetezec do paměti programu, aby tam byl
a zaroveň to nevyhodilo žádný warning?
Je to nějakým nastavením, nebo mám použít nějakou konkrétní verzi winavr?
Prohledal jsem internet a všechny přiklady mi při překladu vyhodí warning.
Momentálně používám WinAVR 20090313.
Poraďte mi co s tím. Díky.
Petr

uartSendStr_P("\r\n\nZadej volbu:");   // rozumím, je to zastaralé
-warning: deprecated conversion from string constant to 'prog_char*'

 // Potřeboval bych se dopracovat k něčemu takovému.
// Mám asi 50 textů, které se nikde neopakují a tahat je
// přes proměné se mi jeví nepřehledné.
uartSendStr_P(PSTR("\r\n\nZadej volbu:"));  // Todle by prý mělo fungovat, 
ale..
-warning: only initialized variables can be placed into program memory area

char text1[] __attribute__ ((progmem)) = "\r\n\nZadej volbu:";
char text1[] __attribute__ ((__progmem__)) = "\r\n\nZadej volbu:";
char text1[] PROGMEM = "\r\n\nZadej volbu:";
-warning: 'progmem' attribute ignored
-warning: '__progmem__' attribute ignored
-warning: '__progmem__' attribute ignored

příklad přímo z dokumentace
const char foo[] PROGMEM = "Foo";
const char bar[] PROGMEM = "Bar";
PGM_P array[2] PROGMEM = {foo,bar};
-warning: '__progmem__' attribute ignored
-warning: '__progmem__' attribute ignored
-warning: '__progmem__' attribute ignored 




Další informace o konferenci Hw-list