float v = 123.456;
char str[50];
sprintf(str, "%.3f\n", v) ; /* Print the original floating-point value. */
printf(str);
在Atmel Studio中使用默认配置,打印结果为?,sprintf无法正常工作。
出现这个问题的原因是支持浮点转换的sprintf体积较大,为了减少最终代码的大小,编译器对sprintf进行了优化。
尝试更改编译参数:
-Wl,-u,vfprintf -lprintf_flt -lm