ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
29 марта
475637 Топик полностью
инженегр (22.12.2013 16:38, просмотров: 1) ответил MegaJohn на IAR AVR - кому удалось заставить правильно работать vsnprintf если строка форматирования размещена во флеши ( --string_literals_in_flash ) ?
Копирование строки форматирования в RAM, vsnprintf, окончательный вывод, недостаток: резервируются два буфера в RAM. int print(const char __generic *fmt, ...) { int i,res; char inpbuf[64]; // возможно static будет лучше в вашем случае char dispbuf[64]; // возможно static будет лучше в вашем случае va_list arg; va_start( arg, fmt ); // копирование форматирования. for(i=0;i<sizeof(inpbuf);i++){ inpbuf[i] = fmt[i]; if(inpbuf[i]==0)break; } res = vsnprintf(dispbuf,sizeof(dispbuf),inpbuf,arg); va_end(arg_ptr); .... окончательный вывод. }