c - snprintf 不工作 float

标签 c gcc printf stm32 rtos

我正在 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/

相关文章:

c - 函数参数的 GTK+ 类型转换样式

c++ - <内置> :1:2: warning: use of C++0x long long integer constant [-Wlong-long]

c++ - 如何知道析构函数中的堆栈损坏来自何处?

c++ - 无效的静态断言行为

c++ - 什么是 c printf %f 默认精度?

c - 无法在线程内用 C 打印?

C - 我试图在递归函数中使用 fprintf 但它只打印最少的行

c - 为什么 `*(multi + row)` 生成指针地址而不是值?

从 C 调用 Mips

c - 用 "return"或 "do_exit()"终止内核线程是一个好习惯吗?