0
執行下面的代碼運行到「!!!」當編譯器進行優化時:使用編譯器優化時的瘋狂行爲
int test()
{
volatile uint32_t flag = 0; /* volatile doesnt matter */
flag = 3;
if (flag == 0)
{
return 0; // !!!
}
else
{
return 1;
}
}
編譯器:IAR Studio C編譯器;平臺:SAM4C微控制器;中等水平的優化
當然,這已經是一個代碼,在原來的問題已經被歸結。
我不明白什麼編譯器在這裏做...
在另一方面,這種按預期工作:
int test()
{
volatile uint32_t flag = 0; /* volatile doesnt matter */
int result = 0;
flag = 3;
if (flag == 0)
{
result = 0;
}
else
{
result = 1; // !!!
}
return result;
}
看起來神祕,還有在ASM任何線索? – harold