为什么有些执行语句会直接跳过
时间:10-02
整理:3721RD
点击:
uint8 xx,yy;
uint16 shortaddr;
shortaddr = pkt->srcAddr.addr.shortAddr;
xx = shortaddr/256;
yy = shortaddr%256;
为啥我这样不行,警告说xx,yy只设了没有用到
我调试了一下,能运行到shortaddr那行,运行完了直接跳过xx,yy那两行,有哪位大神告诉我一下是什么情况吗?感激不尽啊
uint16 shortaddr;
shortaddr = pkt->srcAddr.addr.shortAddr;
xx = shortaddr/256;
yy = shortaddr%256;
为啥我这样不行,警告说xx,yy只设了没有用到
我调试了一下,能运行到shortaddr那行,运行完了直接跳过xx,yy那两行,有哪位大神告诉我一下是什么情况吗?感激不尽啊
最后两句没有用到了,给优化掉了
额。。可以不让他优化吗?
我已经知道了
这样,你在xx这里设置下断点,看看程序是否能运行到断点处。
是编译器优化的问题吗?
是的。。。当语句没有对后续语句产生影响,他会自动屏蔽不执行该条语句。。所以就会出现语句跳过的现象
其实这个你可以添加关键字volatile,这个关键字就是告诉编译器不优化,您可以试试呢。
好的,谢谢