Witam wszystkich:)
Jest to mój pierwszy post tutaj, chociaż wiele razy korzystałem z porad przeglądając to forum:)
Piszę dlatego, że od dwóch dni dręczy mnie pewna zagwozdka, otóż stworzyłem sobie tablice struktur przedstawioną poniżej, która ma nawiasem mówiąc służyć do obsługi menu:
(Aby ładnie było widać składnię proponuje ctrl + scroll down aby zmniejszyć obraz gdyż kod jest dość szeroki:))
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Wszystko elegancko działało dopóki nie uparłem się jak widać żeby wpakować całą tą tablice do flash'a żeby zaoszczędzić trochę RAMu.
Mianowicie mam problem z odczytaniem stringa "first_line", próbowałem na wiele sposobów, oczywiście używając lcd_str_P() i zawsze wyświetla mi krzaki. Na mój rozum takie coś:
Kod:
lcd_str_P( first_line);
powinno hulać, a tak nie jest.
Zauważyłem, że gdy zmienię w deklaracji struktury:
Kod:
char* first_line;
na
Kod:
char first_line[];
i wyświetlę string w taki sposób:
Kod:
lcd_str_P( first_line);
to wszystko elegancko działa.
Moje pytanie brzmi jaka jest różnica? Jak wiadomo użycie nazwy tablicy bez nawiasów jest po prostu adresem pierwszego elementu tablicy w tym przypadku znaków. W pierwotnym przypadku również jest to adres pierwszego elementu string'a więc w czym problem?
Jak dla mnie nie robi mi większej różnicy czy użyję tam tych nawiasów czy wstawię gwiazdkę ale z czystej ciekawości chciałbym się dowiedzieć co jest nie tak, a przy okazji czegoś nauczyć.
Dodam że kompilator w żadnym z tych przypadków nie wywala błędów ani ostrzeżeń.
Pozdrawiam:)