c/c++语言开发共享arm-none-eabi-gcc:使用printf打印浮点数

我正在为SAM3N arm cortex-M3微控制器编写一个C程序。 当我尝试打印浮点数时,它只打印’f’。 示例: printf("%f",43.12); 仅打印f ,而不是43.12

但用整数打印效果很好。

如何启用浮动的完整打印? 我知道默认情况下,编译器禁用浮动打印以减少代码大小(即看起来,它们链接了缩减版本)。 另请注意,makefile中没有使用CFLAGS=-Dprintf=iprintf

工具详情:

    您可以尝试在链接器设置中添加以下选项

    -lc -lrdimon -u _printf_float

    它在ARM-CORTEXM0中对我有用

    可能是因为您的平台/库不支持printf/sprintf %f格式说明符。 作为第一种方法,您可以为浮动/双打滚动自己的printf:

     void printDouble(double v, int decimalDigits) { int i = 1; int intPart, fractPart; for (;decimalDigits!=0; i*=10, decimalDigits--); intPart = (int)v; fractPart = (int)((v-(double)(int)v)*i); if(fractPart < 0) fractPart *= -1; printf("%i.%i", intPart, fractPart); } 

    在默认情况下禁用浮点数的编译器中,默认库可以处理它们是不常见的。 查看引用,您将找到有关如何使用浮点支持重新编译相应库的信息,或者(更有可能)在何处查找已使用它构建的版本。

    需要了解更多c/c++开发分享arm-none-eabi-gcc:使用printf打印浮点数,也可以关注C/ C++技术分享栏目---计算机技术网(www.ctvol.com)!

      以上就是c/c++开发分享arm-none-eabi-gcc:使用printf打印浮点数相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/979566.html

      (0)
      上一篇 2021年12月13日
      下一篇 2021年12月13日

      精彩推荐