打印

PICC编译选项的问题

[复制链接]
2783|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
电子老鹰|  楼主 | 2012-2-29 17:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
PICC9.80和谐版    IDE8.80  
在编译选项里,Double和Float默认都是24位的,可以选择32位的。 但我没用这两个类型,用的是long,它的宽度是多少?
另外,记得以前版本PICC里,char默认是无符号的,可以选择为有符号的。但9.80版本里,好像没有这个选项,那么默认char就是有符号的吗???
沙发
Ryanhsiung| | 2012-2-29 18:40 | 只看该作者
这个我也不清楚,你可以看一下编译器手册!
  或者直接DEBUG一下,在WATCH窗口看一下是几个字节!
我记得有些编译器有些类型位数也是可选的!

使用特权

评论回复
板凳
电子老鹰|  楼主 | 2012-2-29 19:05 | 只看该作者
我debug了,变量aa是long型的。 在WATCH里观察,aa居然是out of  Scope!:'(
难道long在PICC里是24位?  
可是又不想用FLOAT类型,long又不够用,咋办?

使用特权

评论回复
地板
yewuyi| | 2012-3-1 09:57 | 只看该作者
1、Double/Float与long是两回事情,long int一般是32位宽度
2、没有char默认是无符号的,一般相当对unsigned char定义,signed   char代表有符号
3、WATCH窗口只能看到全局变量,如果加入观察局部变量,则显示out of  Scope,局部变量Locals窗口里面,老版本的MPLAB中,全局变量和局部变量都在WATCH窗口,但可能从MPLAB8.0以后就改成了现在这样。

使用特权

评论回复
5
电子老鹰|  楼主 | 2012-3-1 11:08 | 只看该作者
谢谢!
1、我软仿真了,long确实是32位的,跟Double/Float的位数无关。
2、老版本编译器的char确实默认是无符号的,若需要有符号则必须自己设置,你可以查一下。新版本没有这个选项,应该是固定就是有符号的。我也觉得老版本的默认无符号是个笑话。
3、新版本的IDE,在WATCH里也可以看到局部变量,当然在LOCAL里更方便看。

使用特权

评论回复
6
yewuyi| | 2012-3-1 11:17 | 只看该作者
谢谢!
1、我软仿真了,long确实是32位的,跟Double/Float的位数无关。
2、老版本编译器的char确实默认是无符号的,若需要有符号则必须自己设置,你可以查一下。新版本没有这个选项,应该是固定就是有符号的。我也觉 ...
电子老鹰 发表于 2012-3-1 11:08


1、你根本别管MPLAB里面是怎么设置char的,定义的时候一律明确写成singed char或者unsigned char即可完全霍视MPLAB里面是怎么设置或者是有无这项设置。
2、俺用的MPLAB8.63版本里面好像watch窗口看不到局部变量,呵呵,俺也不大看这些东西,基本代码写好了都不仿真的,直接download看一下产品运行情况就可以了,仿真太费事。

使用特权

评论回复
7
Ryanhsiung| | 2012-3-2 12:53 | 只看该作者
叶工比较牛,我只是半桶水的菜鸟!!

使用特权

评论回复
8
dwdsp| | 2012-8-30 19:09 | 只看该作者
哪位知道24位浮点数转32位浮点数的方**

使用特权

评论回复
9
linqing171| | 2012-8-31 07:32 | 只看该作者
out of  Scope,超过了有效的区域。
比如临时变量,可是现在没有到这个函数里面,它的空间存为了其他的变量了,所以就是out of  Scope。
还有就是有些全局变量被优化掉了,到所有的地方都是out of  Scope,因为他被优化掉了,代码无论执行到什么地方,都没有给他分配空间。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

34

主题

274

帖子

3

粉丝