1

在 MPLAB IDE v8.92 中编程时,我遇到了一个非常有趣的问题。这只是代码的一个片段,但这是发生问题的地方:

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 语句被跳过!即调试器甚至不会停止它。任何想法可能发生了什么?

4

2 回答 2

2

总是用-Wall -Werror. 您的语句将在编译时被标记: warning: statement with no effect [-Wunused-value]

于 2015-10-20T21:34:44.493 回答
0

感谢所有提供帮助的人。原来我第一次在论坛上正确地编写了代码,但没有在我的代码中更正它。我编辑了问题以显示错误。

  if(array[i].value == 0) array[i].value == 1;

应该:

if(array[i].value == 0) array[i].value = 1;

我猜这就是我整天盯着屏幕的结果XD

于 2015-10-20T21:27:00.877 回答