win-avr Řetězce ve FALSH a warning

Jan Waclawek konfera@efton.sk
Sobota Květen 2 18:25:28 CEST 2009


PSTR je potencialne problematicke makro, odporucam sa mu podla moznosti vyhybat.

-warning: '__progmem__' attribute ignored je najpravdepodobnejsie sposobeny pokusom o oznacenie nestatickych lokalnych premennych tymto atributom - to nejde. Musia to byt bud globalne, alebo staticke premenne.

wek



----- Original Message ---------------
>Petr Stehlik napsal(a):
>> 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