Jag håller på att ta bort alla Arduino-beroenden ur ett lib i Atmel Studio och har stött på följande deklaration:
Kod: Markera allt
uint16_t fill_tcp_data_p(uint8_t *buf,uint16_t pos, const prog_char *progmem_s)
{...};
När jag kollar upp typedefen för prog_char i avr/pgmspace.h så står det att den är deprecated. Typedefen ser ut enligt följande:
Kod: Markera allt
typedef char PROGMEM prog_char;
Försöker jag byta ut prog_char mot "char PROGMEM" så går går kompileringen igenom, men jag får en varning "__progmem__ attribute ignored". Jag tolkar det som att PROGMEM-direktivet ignoreras och variablen helt enkelt lagras i SRAM istället för i flash-minnet. Båda följande exempel ger samma varning:
Kod: Markera allt
uint16_t fill_tcp_data_p(uint8_t *buf,uint16_t pos, const char PROGMEM *progmem_s)
uint16_t fill_tcp_data_p(uint8_t *buf,uint16_t pos, PROGMEM const char *progmem_s)
{...};
Kod: Markera allt
uint16_t fill_tcp_data_p(uint8_t *buf,uint16_t pos, const char *progmem_s)
{...};