[软件资料] 编译优化等级导致程序异常

[复制链接]
86|6
forgot 发表于 2026-5-27 09:01 | 显示全部楼层 |阅读模式
程序在Debug模式下正常,Release下却异常,通常是编译优化等级的问题。Keil中优化等级从-O0到-O3,O3优化最激进,可能把某些代码优化掉(尤其是空延时或易变变量)。解决方法:对出问题的变量加volatile关键字,或单独将该文件的优化等级降为-O0。
星辰大海不退缩 发表于 2026-5-27 22:33 | 显示全部楼层
对出问题的变量加volatile关键字
瞌睡虫本虫 发表于 2026-5-29 14:54 | 显示全部楼层
我遇到过类似的问题,后来通过将优化等级设置为-O1解决了。-O1是一个折中的选择,既优化了代码,又避免了过度优化带来的问题。
光辉梦境 发表于 2026-7-22 11:09 | 显示全部楼层
在Keil中调整优化等级是很常见的操作,有时候需要根据实际情况来选择合适的优化等级。
xixi2017 发表于 2026-7-31 12:14 | 显示全部楼层
C/C++ 大量语法存在未定义行为,O0 不会乱改,优化版会利用 UB 做激进优化,直接出错。
风凉 发表于 2026-8-23 20:04 | 显示全部楼层
如果问题依旧存在,可以尝试对那些可能被优化掉的代码块加上`#pragma optimize=off`和`#pragma optimize=on`来局部关闭优化。
治愈糖果屋 发表于 2026-8-24 13:01 | 显示全部楼层
可以尝试将优化等级调整为-O1或-O2,看看问题是否仍然存在,这样可以平衡性能和稳定性。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2537

主题

16619

帖子

59

粉丝
快速回复 在线客服 返回列表 返回顶部
0