Na praci s __code jsou tam extra funkce se suffixem _P z headeru pgmspace.h. Takze minimalne to musi jit predat jako parametr:
#define PGM_P const char __code *
#define PGM_VOID_P const void __code *
/* Prototypes using PGM_P suffixed _P */
MEMORY_ATTRIBUTE int memcmp_P(const void *, PGM_VOID_P, size_t);
MEMORY_ATTRIBUTE void *memcpy_P(void *, PGM_VOID_P, size_t);
MEMORY_ATTRIBUTE int printf_P(PGM_P,...);
MEMORY_ATTRIBUTE int puts_P(PGM_P);
MEMORY_ATTRIBUTE int scanf_P(PGM_P,...);
MEMORY_ATTRIBUTE int sprintf_P(char *,PGM_P,...);
MEMORY_ATTRIBUTE int sscanf_P(const char *, PGM_P,...);
MEMORY_ATTRIBUTE char *strcat_P(char *, PGM_P);
MEMORY_ATTRIBUTE int strcmp_P(const char *, PGM_P);
MEMORY_ATTRIBUTE char *strcpy_P(char *, PGM_P);
MEMORY_ATTRIBUTE PGM_P strerror_P(int);
MEMORY_ATTRIBUTE size_t strlen_P(PGM_P s);
MEMORY_ATTRIBUTE char *strncat_P(char *, PGM_P, size_t);
MEMORY_ATTRIBUTE int strncmp_P(const char *, PGM_P, size_t);
MEMORY_ATTRIBUTE char *strncpy_P(char *, PGM_P, size_t);