ARM-GCC下sprintf()的BUG?

简介: ADL User Guide for Open AT. OS v6.1    今天在调试程序时,发现了ARM-GCC下sprintf()的一个问题,它不支持浮点数。以前从来没碰到这个问题,而且认为这肯定不会有问题,折腾了半天,最后在ADL_User_Guide中找到了答案。
ADL User Guide for Open AT. OS v6.1

    今天在调试程序时,发现了ARM-GCCsprintf()的一个问题,它不支持浮点数。以前从来没碰到这个问题,而且认为这肯定不会有问题,折腾了半天,最后在ADL_User_Guide中找到了答案。ARM-GCC下的sprintf()确实不支持%f,文档中给出了相应的解决方法。

     Important remark about GCC compiler:

When using GCC compiler, due to internal standard C library architecture, it is strongly not recommended to use the "%f" mode in the wm_sprintf function in order to convert a float variable to a string. This leads to an ARM exception (product reset).

A way around for this conversion is:

float MyFloat; // float to display

ascii MyString [ 100 ]; // destination string

s16 d,f;

d = (s16) MyFloat * 1000; // Decimal precision: 3 digits

f = ( MyFLoat * 1000 ) - d; // Decimal precision: 3 digits

                  wm_sprintf ( MyString, "%d.%03d", (s16)MyFloat, f ); // Decimal precision: 3 digits

    实践证明,经验主义要不得,看文档很重要,而且要看仔细。

目录
相关文章
|
8月前
|
Ubuntu 编译器 C语言
ARM-GCC与交叉编译
ARM-GCC与交叉编译
|
8月前
|
Linux C语言
在Linux中使用gcc/g++编译代码
1.方法速记 直接编译语法:将text.c文件或者text.cpp文件直接编译成text文件。 gcc text.c -o text // gcc-o text.c text g++ text.cpp -o text // g++ text.cpp -o text
81 0
|
4月前
|
Linux
用clang编译Linux内核
用clang编译Linux内核
|
8月前
|
NoSQL Linux 开发工具
【Linux】5. 开发工具的使用(gcc/gdb/makefile)
【Linux】5. 开发工具的使用(gcc/gdb/makefile)
76 2
|
8月前
|
编译器 Linux
boost库交叉编译ARM版本
boost库交叉编译ARM版本
357 2
|
8月前
|
Linux 编译器
一起来认识Linux中的 BUILD_BUG_ON 宏
一起来认识Linux中的 BUILD_BUG_ON 宏
|
编译器 开发工具 Windows
x64dbg 2022 最新版编译方法
x64dbg 调试器的源码编译很麻烦,网络上的编译方法均为老版本,对于新版本来说编译过程中会出现各种错误,编译的坑可以说是一个接着一个,本人通过研究总结出了一套编译拳法可以完美编译输出,不过话说回来x64dbg这种使用两个编译器开发的方式以及调用太多的第三方项目想要完全编译其实也是非常困难的,如下笔记只提供编译x64dbg本体,并确保其能够正常运行。
x64dbg 2022 最新版编译方法
|
Python
_C.cpython-36m-x86_64-linux-gnu.so: undefined symbol: _ZN2at19UndefinedTensorImpl10_singletonE
_C.cpython-36m-x86_64-linux-gnu.so: undefined symbol: _ZN2at19UndefinedTensorImpl10_singletonE
839 0
|
Linux C语言
LINUX下载编译libc(glibc)
LINUX下载编译libc(glibc)
450 0
|
XML Linux 开发工具
LINUX编译ARM64/AARCH64版本的jogamp(gluegen/jogl)注意事项
LINUX编译ARM64/AARCH64版本的jogamp(gluegen/jogl)注意事项
203 0