Cześć.
Piszę sobie funkcję która ma przyjmować tekst w postaci łańcuch i wyświetlic go na LCD.
Niby prymitywne, ale napotakałem na kilka przykrych niespodzianek.
Funkcja wygląda tak:
No i jak piszę wywołanie funkcji np
to tak nie mogę bo pojawia mi sie to zarówno w RAM jak i we Flash. Pisząc jeszcze inaczej
to koppia nie zostaje umieszczona w RAM ale pojawia się komunikat:
warning: passing arg 1 of `lcd_p' discards qualifiers from pointer target type
Dlaczego tak jest. DLaczego jak zmienię funkcję a dokładniej parametr funkcji i napiszę
To już nie pojawia sie ostrzeżenie. Co powoduje że dodając const to się zmieia.
Mam nadzieję że jakoś wyraźnie to opisałem i nie namieszałem. A oczywiście kompilator ARG-GCC
Piszę sobie funkcję która ma przyjmować tekst w postaci łańcuch i wyświetlic go na LCD.
Niby prymitywne, ale napotakałem na kilka przykrych niespodzianek.
Funkcja wygląda tak:
void lcd_p(prog_char *ptr)
{
char znak;
while( 0 != (znak = pgm_read_byte(ptr++)) )
lcd_data(znak);
}
No i jak piszę wywołanie funkcji np
lcd_p("tekst"); to tak nie mogę bo pojawia mi sie to zarówno w RAM jak i we Flash. Pisząc jeszcze inaczej
lcd_p(PSTR("tekst");to koppia nie zostaje umieszczona w RAM ale pojawia się komunikat:
warning: passing arg 1 of `lcd_p' discards qualifiers from pointer target type
Dlaczego tak jest. DLaczego jak zmienię funkcję a dokładniej parametr funkcji i napiszę
void lcd_p(const prog_char *ptr)
{ ...To już nie pojawia sie ostrzeżenie. Co powoduje że dodając const to się zmieia.
Mam nadzieję że jakoś wyraźnie to opisałem i nie namieszałem. A oczywiście kompilator ARG-GCC