我在STM32F437上编程。我正在使用SafeRTOS。编译器是GCC。
在一项任务中,我使用snprintf()
来准备带有值的字符串。
问题是snprintf()
无法处理浮点数。当它到达格式化字符串中的任何'\0'
或%f
时,它只会结束生成的字符串(%g
}。
但是,这很奇怪。如果我在启动RTOS之前在snprintf()
中向snprintf()
添加了一个虚拟调用,则任务中的main()
没有问题。
虚拟电话:
char dummy[20];
snprintf(dummy, sizeof(dummy), "%g", 3.14159);
我找到了类似的解决方案here
但没有回答为什么会有效。
任何想法发生了什么?
答案 0 :(得分:0)
某些小型实现中的printf库不包含浮点支持。也许虚拟调用以某种方式导致使用更完整(和更大)的库?