完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
我使用XC1.42与传统的LIB和PIC32 EFM。我打算使用SNPrTNF的“%.4G”格式说明符。但是,这似乎不起作用。通常%g提供了一种机制,使值从十进制表示(用%f)切换到科学表示(用%e)。对于在Internet上找到的snprintf文档,您通常可以阅读像“使用更短的表示”之类的内容,有时甚至描述某种机制,它如何在%e和%f之间作出决定。文献)g,G-double(适当地采用e,E或f的形式)我使用了一些测试代码,这些代码和x范围从0到15非常相似:我得到了这些结果:正如你所看到的,它从不转换到科学表示。这是SNPrTNF函数的另一个bug吗?有没有人知道X32 V1.44的行为是否不同?
|
|
相关推荐
6个回答
|
|
|
唉……我已经记不清XC32修订版的数量了,对于64位ints、float、doubles或long doubles来说,它们“固定”(最多)一个打印函数和“不固定”(至少)另一个打印函数。(我想有点像蒙着眼睛玩Whack-A-Mole。)对于XC32版本1.44,使用“使用遗留libc”XC32全局选项,我得到的输出与您发布的输出相同:“%g”没有按照指定工作。另一方面,当我取消选中“使用遗留libc”框时,会得到预期的输出。我粘贴了fol。在我的PIC32MM0064GPL028项目中,主要()如下:在“使用遗留libc”未选中,输出是OK:利用XC32版本14400:str_.:<6.667e-07>6.667e-07>1:str_.:<6.667e-06>2:str_.:<6.667e-06>str_缓冲;;;6.667e-06>2:str_.:<6.667e-05>6.667e-05>6>6.667e-05>3:str_缓冲;3:str ffer:< 0.00666667>5:str_缓冲器:< 0.06666667>0.06667>6:str_缓冲区:< 0.066666767676767676>>5:str_str_缓冲器:< 0< 0.06666666666666767676767676767676>>6>6;6>6>6>6>6&6str_缓冲器:>>0>str_缓冲区:< 0< 0.066666666666666666666666666676767676767676767676lt;6.667e+05>13:str_.: <6.667e+06>14:str_..: <6.667e+07>15:str_.: <6.667e+08>Sigh...(但我已经说过了)注意,当我直接使用printf而不是进行s printf时,这两种情况的结果完全相同,所以这不仅仅是s printf,而是整个家族。
|
|
|
|
|
|
XC32 1.44增加了NYLIB作为一种选择,尽管它似乎不被暴露为MPLAB X(尚未)的选项。我还没有尝试使用它来查看它是否工作,以及它是如何影响最终程序的,但是我会假设Newlib比其他选项都慢并且大。另一方面,应该提供完整的C99支持。
|
|
|
|
|
|
是的,我在发行说明中看到了。我也不在乎。唉,除非任何类型的新东西都有真正的优点(真正、真正、真正地优点),否则我很乐意(或者至少不那么不乐意)接受一个更新,它不会破坏我已经使用的东西。不管怎样,只是为了好玩,在看了你的文章之后,因为这个项目还刚刚开始。我的想法,我再次启动,并添加MNILIB LIB到XC32全局选项,我的小测试程序。这个测试比我所报告的浮点数据多一些,但不多。使用newlib可以得到与非遗留libc相同的(可接受的)“%g”输出。对于这个测试,我在“自由”模式下使用XC32版本1.44,优化级别为1。ytes(我的MM0064GPL028的85%)这不一定是一个显示停止器(我用这个芯片的“真正的”项目不使用浮点计算或打印,并且我没有在没有浮点材料的情况下测试它),但是它让我暂停(并且让我烦恼)。IL:非传统LIBC,非NeLIB库的行为与我的工作站上的GCC版本4.4.7相同。正如OP所报道的,传统的LIBC没有。这本新书可能有一些我没注意到的优点,不过我看起来并不刻苦。
|
|
|
|
|
|
谢谢大家的回复。戴夫所显示的输出是我所希望看到的。在我的例子中,类似的情况也是可以接受的。我现在已经向支持者报告了bug。(案例号00255688)库的情况非常令人难过。我切换到遗留库,因为其他一些转换函数在普通库中无法工作,而且因为它现在是推荐的库。现在越来越难至少模糊地概述哪些特性与哪个编译器、哪个库以及哪些编译器设置一起工作。这不是第一次我认为:“一个关于哪些特性有bug的概览表会很有帮助。”Newlib的大小不是很好,但我认为这不会阻止我使用它,如果它能提供更少的bug。如果只是稍微慢一点,这在我的情况下也是可以接受的。但是主要引用的关于库的句子并没有给我一个好的感觉:“这个选项主要用于从使用Newlib标准C库的其他编译器移植到XC32的应用程序。”LIB,或者像这个图书馆真的很低效。
|
|
|
|
|
|
NeLIB本身就是一种高质量的产品,并被部署在世界范围内的数百万产品中。然而,项目更关注标准的遵从性和可移植性,这就是为什么它不像某些专有备选方案那样优化的原因。有叉(如NexLib Nano,由ARM在其GCC工具链分布中使用)提供不同的折衷。
|
|
|
|
|
|
Microchip支持能够复制V1.44的bug。它现在登录了他们的内部问题数据库。支持者也给了我一个解决办法:我到目前为止还没有测试过。他还转发了我的反馈意见,建议给编译器团队创建一个C库测试平台。
|
|
|
|
|
只有小组成员才能发言,加入小组>>
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
473 浏览 0 评论
5793 浏览 9 评论
2334 浏览 8 评论
2224 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3530 浏览 3 评论
1124浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
1097浏览 1评论
我是Microchip 的代理商,有PIC16F1829T-I/SS 技术问题可以咨询我,微信:A-chip-Ti
873浏览 1评论
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
475浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 07:46 , Processed in 0.782934 second(s), Total 84, Slave 67 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
3800