我正在 STM32F437 上编程。我正在使用 SafeRTOS。编译器是GCC。
在一项任务中,我使用 snprintf()
准备一个包含值的字符串。
问题是 snprintf()
无法处理 float 。当它到达格式化字符串中的任何 %f
或 %g
时,它只是结束结果字符串(使用 '\0'
)。
但是,这很奇怪。如果我在启动 RTOS 之前在 main()
中添加对 snprintf()
的虚拟调用,任务中的 snprintf()
就可以正常工作.
虚拟调用:
char dummy[20];
snprintf(dummy, sizeof(dummy), "%g", 3.14159);
我找到了类似的解决方案here
但没有回答为什么它有效。
有什么想法吗?
最佳答案
某些小型实现中的 printf 库不包括浮点支持。也许虚拟调用以某种方式导致使用更完整(和更大)的库?
关于c - snprintf 不工作 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29847199/