win-avr Řetězce ve FALSH a warning

Stano stano.hw@gmail.com
Sobota Květen 2 11:24:04 CEST 2009


Ako je definovana funkcia uartSendStr_P()?
Pouzivam tento zapis:
const char text1[] PROGMEM = "\r\n\nZadej volbu:";
void uartSendStr_P(PGM_P meno_stringu);
// a potom
uartSendStr_P(text1);

WinAVR20080610 bez warningov a funkcne...
A len tak informacne nezabudli ste na #include <avr/pgmspace.h>

Petr Stehlik  wrote / napísal(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 
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list@list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
>   




Další informace o konferenci Hw-list