执行以下代码运行到" !!!"优化编译器时:
'abc ghf ksjwwl'
编译器:IAR Studio C编译器;平台:SAM4C微控制器;中等水平的优化
当然,这已经是一个代码,原来的问题已经解决了。
我无法理解编译器在这里做了什么......
另一方面,这可以按预期工作:
int test()
{
volatile uint32_t flag = 0; /* volatile doesnt matter */
flag = 3;
if (flag == 0 )
{
return 0; // !!!
}
else
{
return 1;
}
}
答案 0 :(得分:0)
我花了一些时间观察,虽然调试器在“return 0;”的行停止,但函数确实返回1。
我遇到的问题与未初始化的变量(在函数外部)相关,在优化期间不会自动设置为零。
除了调试器中的奇怪行为外,该函数是正确的。不幸的是,这一观察导致了一种误解。