QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2204|回复: 5

版主:问你一个有关格式化输出的问题

[复制链接]
发表于 2005-8-2 19:01:45 | 显示全部楼层 |阅读模式
我用的是44b0开发板
格式化输出语句用的是44b0test里面的Uart_Printf,可是发现一个很怪的问题。我写了一个语句

如下:
     float a=8.888;
     Uart_Printf("a=%f",a);
则输出a=8而不是8.888

     将a定义为double类型即
     double a = 8.888;
     Uart_Printf("a=%f",a);
则输出a=8?88000,奇怪,难道Uart_Printf()不支持浮点类型格式吗???

btw:我的开发环境是ads1.2

谢谢
发表于 2005-8-3 14:42:01 | 显示全部楼层
ADS 文档里面有关于如何支持浮点 printf 的办法,找一下看看。
回复

使用道具 举报

 楼主| 发表于 2005-8-3 18:42:30 | 显示全部楼层
谢谢。
刚才看了ADS_CompilerGuide_D.pdf p105,上面说如果要使编译器支持除法、结构拷贝、FP运算的话,要调用__rt_raise()
另外,对于浮点运算,还要调用_fp_init(),对于软浮点运算,还必须调用_rt_fp_status_addr().

等会试一试,不过我现在还有一个问题,如果我的初始化程序里(即44binit.s),呼叫主应用程序使用
 IMPORT __main
    B __main
即采用系统级的呼叫机制,那么上面这三个库函数是不是会自动调用呢?
谢谢。
回复

使用道具 举报

 楼主| 发表于 2005-8-3 20:14:50 | 显示全部楼层
解决了,谢谢
回复

使用道具 举报

发表于 2005-8-4 10:49:15 | 显示全部楼层
说一下怎么解决的吧,别人也好从你这里学习  
回复

使用道具 举报

 楼主| 发表于 2005-8-4 12:00:45 | 显示全部楼层
好的。
在main()函数开头加一个初始化函数:__rt_lib_init()就可以了,至于为什么这样子,我也不知道,反正加了这句话后就能正常输出了.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-22 01:49 , Processed in 0.130171 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表