我想出一个非常有趣的问题,同时编程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