#码力全开·技术π对# keil5中优化等级影响代码运行原因

比如将优化等级设置成 优化等级0,此时在函数中打印局部变量就会出现问题,将优化等级改为优化等级1,又没问题了

keil stm32
莹莹浮动的尘埃
2025-05-16 09:59:44
浏览
收藏 0
回答 2
待解决
回答 2
按赞同
/
按时间
key_3_feng
key_3_feng


  1. 未初始化的变量:在-O0模式下,由于缺少优化,某些编译器可能不会自动初始化变量,而在-O1模式下,编译器可能会隐式地为你做这件事,或者因为优化改变了变量的初始化时机而避免了这个问题。
  2. 调试信息:在低优化级别下,编译器会保留更多的调试信息,使得调试器能够准确地映射回源代码。但如果源代码中有逻辑错误,比如使用了超出作用域的指针或者引用了已释放的资源,这些问题在高优化级别下可能表现得不同。
分享
微博
QQ
微信https://www.51cto.com/aigc/
回复
2025-05-16 22:19:55
Jaysir
Jaysir
  • 优化等级0可能导致编译器不生成局部变量的调试信息,故打印局部变量会出问题。
  • 改为优化等级1后,编译器生成适当的调试信息,问题消失。
分享
微博
QQ
微信https://www.51cto.com/aigc/
回复
2025-05-17 16:06:53
发布
相关问题
提问