我正在使用不同的 C 编译器为德州仪器 (TI) MSP430 微控制器升级经过全面测试的 C 程序,从 Quadravox、AQ430 开发工具更改为 VisualGDB C 编译器。
该程序使用 VisualGDB 以零错误和零警告编译。中断服务程序、定时器、UART 控制等等似乎都在工作。但是,sprintf 的某些用途不起作用。例如:
unsigned int duration;
float msec;
msec = (float)duration;
msec = msec / 125.0;
sprintf(glb_response,"break: %3.1f msec",msec);
这将返回:break: %3.1f msec
这是预期的:break: 12.5 msec
我了解到以下内容(来自维基百科):
编译器选项 --printf_support=[full | 最小 | nofloat] 允许您使用更小、功能有限的 printf/sprintf 变体,并在构建时做出选择。
有效值为:
full:支持所有格式说明符。这是默认设置。
nofloat:不支持打印浮点值。支持除 %f、%g、%G、%e 和 %E 之外的所有格式说明符。
最小:支持打印没有宽度或精度标志的整数、字符或字符串值。具体来说,仅支持 %%、%d、%o、%c、%s 和 %x 格式说明符
我需要对 printf 的全面支持。我知道我的产品上的 MSP430 将支持这一点,因为这个 C 程序已经使用了多年。
我的问题是我无法弄清楚 1)VisualGDB 是否有办法将 printf 支持设置为完全和 2)如果有,在哪里设置它。
任何和所有的评论和答案将不胜感激。