Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Deklarace pole stringů

Stringy v arduinu a v céčku jsou pro nezasvěcené taková alchymie. Už jen proto, že podobné proměnné (tj. pole a struktury) jsou z principu automaticky brané jako ukazatele, ale dochází nebo nedochází u nich k automatické dereferenci z čehož vyplývá právě ten zmatek (kdyby byla povinnost provádět dereferenci všude je to v pohodě, kdyby naopak se všude dereference dělala sama a adresu by si člověk musel vyžádat bylo by to také v pohodě, ale jak to je někde tak a někde jinak, je to vždy zmatek). Vím, že kdo se živí céčkem mi bude tvrdit, že je to jasné a jednoduché (i ve škole jsme se učili jak je to jednoduché, Herout to taky popisuje docela jednoduše) já osobně si teda musim v případě potřeby jednotlivé kousky kódu vyzkoušet na něcem jednodušším, nedokážu takové věci zařadit přímo do programu ani po několikerém nastudování příslušných kapitol Herouta.
Do toho se ještě přidává potřeba konstantních textových řetězců uložených v programové paměti nebo eeprom (definuje se direktivou PROGMEM, EEMEM), není totiž důvod textovými řetězci, jejichž hodnota se nemění (typicky zprávy uživateli) si zabírat ramku, které je v arduinu opravdu velmi málo, zatímco té programové je víc než dost. Ovšem nestačí to definovat jen jako const a ani nestačí potom takovou proměnnou použít, musí se přes pgm_read nebo ee_read kterým se předávbá ukazatel, ale ten se zase musí přetypovat a výsledek snad taky. To co píšu vlastně platí pro AVRStudio, v adruino ide moc nedělám (cokoliv složitějšího než nějaký základní ukázkový příklad se tam dělá dost blbě), arduino na to má definovaná nějaká makra, ale jiná pro třídu printable a jiná jinde, naštěstí se to dá okoukat z některých příkladů, kde to používají.

Reakce na odpověď

1 Zadajte svou přezdívku:
2 Napište svou odpověď:
3 Pokud chcete dostat ban, zadejte libovolný text:

Zpět do poradny