打印
[51单片机]

C51 代码不被编译,求解

[复制链接]
888|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
彪哥|  楼主 | 2015-3-23 20:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
采用8级代码优化,编译后发现if语句都没执行,程序直接置位变量,READ是接口读取数据,判断其状态,经试验,采用6级优化正常,7、8级都有这个问题,大惑不解!求助!

QQ图片20150323203242.png (9.41 KB )

QQ图片20150323203242.png

QQ图片20150323203354.png (15.14 KB )

QQ图片20150323203354.png

相关帖子

沙发
JY-DX-JY| | 2015-3-23 20:53 | 只看该作者
那就是被优化掉了。

使用特权

评论回复
板凳
ayb_ice| | 2015-3-24 08:01 | 只看该作者
第一个条件永远满足

使用特权

评论回复
地板
ningling_21| | 2015-3-24 09:11 | 只看该作者
READ 是一个宏定义?

或者第一个条件总是成立的

使用特权

评论回复
5
彪哥|  楼主 | 2015-3-24 10:50 | 只看该作者
本帖最后由 彪哥 于 2015-3-24 11:09 编辑

恍然大悟!READ应该与0x03,总有这种钻进死胡同的感觉。谢谢楼上几位!

使用特权

评论回复
6
coody| | 2015-3-24 13:40 | 只看该作者
如果_IP_MODE为非0值,则 if((READ & 0x00) == _IP_MODE)永远不满足,所以编译器就忽略掉了。

如果_IP_MODE为0值,则条件永远满足,就不会被优化掉,但后面的else if则很可能会被优化掉,因为永远执行不到。

编译器其实很聪明的。

使用特权

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

本版积分规则

44

主题

171

帖子

1

粉丝