IAR中为什么有些执行语句会直接跳过

真是个小菜鸡 2015-07-23 08:41:35
uint8 xx,yy;
uint16 shortaddr;
shortaddr = pkt->srcAddr.addr.shortAddr;
xx = shortaddr/256;
yy = shortaddr%256;
为啥我这样不行,警告说xx,yy只设了没有用到
我调试了一下,能运行到shortaddr那行,运行完了直接跳过xx,yy那两行,有哪位大神告诉我一下是什么情况吗?感激不尽啊
...全文
947 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
vilsenma 2018-07-20
  • 打赏
  • 举报
回复
加一个static修饰就可以了
mangoalx 2015-07-27
  • 打赏
  • 举报
回复
既然解决了,不妨说明一下怎么解决的,其他人看到至少也明白怎么回事了
真是个小菜鸡 2015-07-27
  • 打赏
  • 举报
回复
还是谢谢大家的帮忙,虽然当天晚上就解决了。。
worldy 2015-07-24
  • 打赏
  • 举报
回复
引用 6 楼 shinerise 的回复:
把优化等级调成最低,然后最后加上对XX,YY的引用,比如:xx=xx;yy=yy;这样可以防止XX,YY被优化掉。
你用两个局部变量,又不使用,骗过编译器,又有什么用,欺骗编译器,实际就是欺骗自己
shinerise 2015-07-24
  • 打赏
  • 举报
回复
把优化等级调成最低,然后最后加上对XX,YY的引用,比如:xx=xx;yy=yy;这样可以防止XX,YY被优化掉。
a686432 2015-07-24
  • 打赏
  • 举报
回复
定义为变量类型即可
worldy 2015-07-24
  • 打赏
  • 举报
回复
没什么大问题 xx = shortaddr/256; yy = shortaddr%256; 你只是赋值,但是这两个值没有使用到 你如果再来一个 zz=xx+yy; 那就不会这样警告了
fly 100% 2015-07-24
  • 打赏
  • 举报
回复
编译时直接去除了不会被调用的语句
mangoalx 2015-07-23
  • 打赏
  • 举报
回复
是没用到啊,xx yy 赋值以后就没用了,所以编译器就给优化掉了 随便再加个语句,比如 shortaddr = xx * 256 + yy;
真是个小菜鸡 2015-07-23
  • 打赏
  • 举报
回复

1,616

社区成员

发帖
与我相关
我的任务
社区描述
智能硬件,智能手表,可穿戴设备,智能电视,谷歌眼镜,Google Glass 相关讨论。
社区管理员
  • 智能硬件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧