最近在用keil编写程序。由于编写的程序比较复杂,经常由于编译器优化的原因产生问题,会死在莫名奇妙的地方。最明显的现象是用串口发送数据。本来会发数据上来,可是会因为一条赋值语句,就不发数据。这些问题很莫名,搞的我头大。后来发现是编译器优化的问题。于是通过keil的工程设置里的C51选项下,将编译器优化降为最低等级。很多问题得到了改善。但仍然会出问题。出问题的地方,随便加些代码,可能就又好了。
因此,我想提出几个问题:
1、如何看待keil的编译器优化?
2、编写复杂程序的时候(中断多,变量多)是否应该禁止编译器优化?
3、如何避免编译器优化的问题?除了volitile的应用,还有其他方法么?
4、对于我来说,最快的解决方法是keil中如何禁止编译器优化? |