инженегр (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);
....
окончательный вывод.
}