[AVR单片机] 编译没有异常,但运行程序,就有一行语句没有执行。

[复制链接]
1724|5
 楼主| luojijian 发表于 2013-9-27 17:16 | 显示全部楼层 |阅读模式
无意中把一段代码写成这样:

....
.....
a=b;
a=a-c;
.....
......

代码就是这样,a、b、c都是普通的变量。
a=b;这一行没有执行,相当于直接忽略掉了。
这正常吗?
airwill 发表于 2013-9-27 22:40 | 显示全部楼层
也许是代码优化的结果, 得看整体代码.
 楼主| luojijian 发表于 2013-9-28 08:00 | 显示全部楼层
airwill 发表于 2013-9-27 22:40
也许是代码优化的结果, 得看整体代码.

可能,不然不知道怎么回事了。
ayb_ice 发表于 2013-9-28 09:45 | 显示全部楼层
如果是局部变量是可以这样优化的
 楼主| luojijian 发表于 2013-9-28 11:02 | 显示全部楼层
ayb_ice 发表于 2013-9-28 09:45
如果是局部变量是可以这样优化的


a是全局的,其它两个是局部的。我用的是IAR的编译器,我发现优化选项默认是中等。

顺便几个疑问也想请教一下大家
①如果程序编译时没有优化,是不是所有变量就跟加了volatile关键字一样的效果,
②volatile修饰的变量,个数上有没有限制,程序里有很多的volatile变量行不行,以前貌似听说太多了不好?
③大家编译程序一般优化不?选择优化的话,哪些方面要注意?
xxiao6130 发表于 2013-9-28 14:29 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

28

主题

97

帖子

0

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