Wpis z mikrobloga

#programowanie #cpp #cplusplus #arduino #avr

Mam problem, tzn. wcześniej było tak

unsigned char charMap[] = { ... }
unsigned char *pFont;
(jakiś kod)
pFont = &charMap[((unsigned int)(*c) - 32) * 14];
a teraz jest tak:

prog_uchar charMap[] PROGMEM = { ... }
unsigned char *pFont;
pFont = pgm_read_byte_near(&charMap + ((unsigned int)(*c) - 32) * 14);
i kompilator wyrzuca mi błąd

invalid conversion from 'uint8_t' to 'unsigned char*
Moglibyście mi pomóc? Jak temu zaradzić? Próbowałem konwersji na wskaźnik ale chyba coś robię źle, bo nie pomaga.
  • 26
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@vifon_pikantny: pFont to wskaźnik na char, nie możesz przypisać do niego wartości char (tzn możesz przez rzutowanie, ale raczej nie osiągniesz nic poza katastrofą). Możesz tę wartość zapisać pod adres który wskazuje pFont:

*pFont = //stuff

ale w tym przypadku to też kiepski pomysł, bo nie zainicjowałeś jego wartości, więc nie wskazuje na nic konkretnego (na coś wskazuje tylko nie wiadomo na co)
  • Odpowiedz
@inplaz: nie wiem, po prostu chciałem dodać PROGMEM do programu i mi się krzaczy, jeżeli masz jakiś inny pomysł na realizację dokładnie tego samego co było poprzednio, to zapraszam :)
  • Odpowiedz