[51单片机] C51 代码不被编译,求解

[复制链接]
1104|5
 楼主| 彪哥 发表于 2015-3-23 20:37 | 显示全部楼层 |阅读模式
采用8级代码优化,编译后发现if语句都没执行,程序直接置位变量,READ是接口读取数据,判断其状态,经试验,采用6级优化正常,7、8级都有这个问题,大惑不解!求助!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
JY-DX-JY 发表于 2015-3-23 20:53 | 显示全部楼层
那就是被优化掉了。
ayb_ice 发表于 2015-3-24 08:01 | 显示全部楼层
第一个条件永远满足
ningling_21 发表于 2015-3-24 09:11 | 显示全部楼层
READ 是一个宏定义?

或者第一个条件总是成立的
 楼主| 彪哥 发表于 2015-3-24 10:50 | 显示全部楼层
本帖最后由 彪哥 于 2015-3-24 11:09 编辑

恍然大悟!READ应该与0x03,总有这种钻进死胡同的感觉。谢谢楼上几位!
coody 发表于 2015-3-24 13:40 | 显示全部楼层
如果_IP_MODE为非0值,则 if((READ & 0x00) == _IP_MODE)永远不满足,所以编译器就忽略掉了。

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

编译器其实很聪明的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

44

主题

171

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部