我想出一個非常有趣的問題,同時編程MPLAB IDE v8.92。 這僅僅是一個代碼snipit但是這是問題正在發生:如果語句跳過
struct data
{
INT32 value;
};
struct data array[8] = {{0},{0},{0},{0},{0},{0},{0},{0}};
INT32 IOC[8];
INT32 IOD[8];
for (byte i = 0; i<8; i++)
{
#ifdef DAC
IOC[i] = 0;
IOD[i] = 24;
if(array[i].value == 0) array[i].value == 1;
#endif
}
代碼編譯沒有錯誤,當我通過這部分代碼步驟使用ICD 3調試,IOC和IOD被正確賦值,但if語句被跳過了!即調試器甚至不會停下來。任何想法可能發生了什麼?
注:數組[X] .value的是一個32位的int。 –
編譯器可能會注意到,'陣列[I] .value'總是等於零在該點,跳過'if'語句。沒有進一步的信息,很難說出發生了什麼。編譯器生成的程序集也可以提供幫助。你能把它分解成一個最小的自包含的例子嗎? – fuz
編譯器可能已經推斷出所有的「值」都是非零的,並且優化了該語句。或者把它放在其他地方...... – vonbrand