ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
17 июля
296201
Лeoнид Ивaнoвич (02.01.2012 11:14, просмотров: 5682)
В исходнике программатора с протоколом STK-500 есть такие строчки: void uart_sendstr_p(const prog_char *progmem_s); // macros for automatically storing string constant in program memory #ifndef P #define P(s) ({static const char c[] __attribute__ ((progmem)) = s;c;}) #endif #define uart_sendstr_P(__s) uart_sendstr_p(P(__s)) Не пойму, как написан макрос P(s). Разве в Си можно такую конструкцию давать функции в качестве аргумента? У меня не заработало, написал по-другому: void Uart_SendStrFlash(char __flash *s); #define Uart_SendStrF(s) { static char __flash c[] = {s}; Uart_SendStrFlash(c); }