This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
如果某个变量只是定义了,没有具体操作(只有赋值语句不算)会被编译器优化掉。很多编译器都会这么做。
选择高优化等级不会提升for这种常见的操作。当然,你可以选择不同优化等级,看生成的汇编代码比较。
我定义了两个变量,一个表示本次中断接收数据,一个表示上次中断接收数据,并且将这两个变量做差。这样的操作应该不会被优化掉吧?不管我定义这两个变量为局部变量还是全局变量,都不会执行赋值操作。而且当优化等级为-4时,出现无法查看变量数值的情况,请问这个现象正常吗?
你好!
如果这个赋值语句是给后面未使用的变量进行,或者没有将该变量定义为volatile类型,都会出现这种情况。
简单的办法就是将优化等级设置为off,这样是不优化,程序是都能执行的。
CCS优化选项和优化的详解请详见TMS320C28x Optimizing C&C++ Compiler V6.1 User's Guide,chapter 3 Optimizing Your Code。