GCC编译STM32时,使用snprintf函数无法格式化float型数据的问题
最近在VSCODE+GCC环境下编译一段代码,目标芯片为F4系列。使用snprintf函数时,发现一个特别现象:启用nano C库(即链接选项加上-specs=nano.specs)时,无法格式为float型数据,格式化结果皆为0x00;禁用nano C库(即链接选项加上-specs=nosys.specs )时,就可以了,但是bin文件暴增30多KB。请教坛友,如何做到在使用nano C库的时候,可以正常使用snprintf函数格式化float型数据?
uint8_t tempMxxBuf;
float tempvip;
int8_t testvar;
tempvip = (float)110.5;
testvar = snprintf(tempMxxBuf,sizeof(tempMxxBuf),"%4.1f",tempvip);
上述代码,正常格式化后,tempMxxBuf = {0x31,0x31,0x30,0x2e,0x35};testvar = 5;
格式化失败后,tempMxxBuf = {0x00};testvar = 0x90; -u _printf_float
-u _scanf_float 真是自古人才出二楼!
加入链接选项-specs=nano.specs -u _printf_float后,就正常了。
试了下,-u _printf_float和-u _snprintf_float还是有些区别,前者可以,后者不行! 本帖最后由 Himem 于 2023-10-25 17:39 编辑
bigharpoon 发表于 2023-10-25 17:05
真是自古人才出二楼!
加入链接选项-specs=nano.specs -u _printf_float后,就正常了。
试了下,-u _printf ...
(引用自3楼)
没n,symbol是固定的,snprintf内部还是用_printf_float(weak),
link时用-u强制链接上
页:
[1]