我在用IAR的时候,怎么有这样奇怪的事情?
volatile static uchar power; //定义一个外部变量
当时在中断函数里,加入这样的式子power=power+sum,怎么提示警告Warning[Pa082]: undefined behavior: the order of volatile accesses is undefined in this statement
但是把开头的volatile去掉才没有警告了。。。。volatile的作用就是不让编译器别把它定义的变量给优化掉了吗。。。。。。
还有就是用volatile static uchar power 这样定义变量就算后面没有用到,也不会提示。而没有用volatile的外部变量,没有用到就要提示警告了......该怎样理解呢??? |