1. 概述
在讲编译器优化导致程序问题前先要讲讲什么是编译器优化。不同的C语言编译器都会对程序进行一定程度的优化,每种编译器都会划分几种编译优化等级。不同的优化等级对程序的优化程度不同,有对代码空间的优化,有对执行时间的优化。编译器针对不同问题的优化都是基于某种算法的,但是最终的原则是不能改变用户程序的执行逻辑。在大多数情况下这种优化会提高程序的执行效率及优化代码空间,但是有时编译器也会错误的领会程序员的意图,将一些代码优化后造成不可预测的问题。这种问题有时候是概率性问题,出现问题也是莫名其妙,找不到触发问题的代码所在。下面我列举一个我在bcos调试过程中遇到的这类问题。
2.在keil中优化等级及优化等级的设置
在keil中我们打开魔法棒,然后选择“C/C++”,如下图:
这里有O0 ~ O3四个等级可供用户设置,设置完成后点击