芯片使用G030,优化等级高于optimize for debug时,就会出现 main函数里的while()循环出现if()内语句不能正常执行的问题![]() ![]() 查了半天才发现跟优化等级的有关的 ![]() |
if的变量要申明成volatile了吗?否则编译不会每次读出变量的最新值做判断。
这是正常现象,跟你的代码、跟优化等级息息相关。
if的变量要申明成volatile了吗?否则编译不会每次读出变量的最新值做判断。 ...
没有设置成 volatile ,但是最主要的是,如果将if写成一个函数 在 main 里进行调用, 同样没有设置成 volatile,相同优化等级下,程序是可以正常运行的 这个说明优化上还是有很多坑的
优化等级很考验C语言功底啊,要求不高就别开起优化等级了
优化等级很考验C语言功底啊,要求不高就别开起优化等级了
的确,开优化需要注意程序的规范,但是这么个问题还是第一次见 以前用KEIL写一直都是开低等级优化的,也没遇到这样的问题,这次用cubeIDE只是开了O1优化就发现了这个问题