迭代500调用不确定的行为[ - 沃格拉斯 - 环(Waggreserivers-loop-optimization)



我正在处理Arduino代码,并且该代码似乎很好且结构良好,但是我认为一行有一个错误,或者也许我忘了添加SMTHG代码

#include <SoftwareSerial.h>
#include <avr/pgmspace.h>
const int dsize = 500;
int analogPin = A0;    
int data[dsize];
int counter = 0;
unsigned long measurmentDelay = 600000; //10 min
SoftwareSerial mySerial(2, 3); // RX, TX
unsigned long time_now = millis();
void setup() {
  // put your setup code here, to run once:
delay(500);
  mySerial.begin(9600);
  mySerial.println("###Power on###");
  int i=0;
  for (i = 0; i < dsize+1; i = i+1) {
    data[i]=0;
  }
  time_now = millis();
}

我有这个错误,我不知道该怎么办

H:Pythonsketch_feb19asketch_feb19a.ino: In function 'setup':
H:Pythonsketch_feb19asketch_feb19a.ino:20:14: warning: iteration 500 invokes undefined behavior [-Waggressive-loop-optimizations]
     data[i]=0;
              ^
H:Pythonsketch_feb19asketch_feb19a.ino:19:3: note: containing loop
   for (i = 0; i < dsize+1; i = i+1) {
   ^

如果有人可以帮助我,请感谢。

实际上错误很明显。它告诉您,在您的循环中,迭代500有问题。

如果您仔细观察,您会发现data是一个500个元素数组。

您的迭代从0到500(包括(,因此是501个元素。

要解决它,您的循环只能有500个步骤,而不是501(基本上删除代码中的 1(

for (i = 0; i < dsize; i = i+1)

最新更新