Arduino:必须使用大括号括起来的初始化程序来初始化数组

问题描述 投票:0回答:1

我一直在ESP8266的基础上制作一个简单的服务器。不知何故,我收到此错误消息:

Compilation error: array must be initialized with a brace-enclosed initializer
.

这是代码:

  server.on("/data", HTTP_GET, [](AsyncWebServerRequest* request){
    int signals[] = {0, 0, 0, 0, 0, 1};
    int collected_data[amount_of_cells] = updateShiftRegister(signals, sizeof(signals) / sizeof(signals[0])); 

    String jsonResponse = "{\"value1\":\"" + collected_data[0] + "\"},"; // \ looks like: {"pot_value": "<collected_data>"}
    jsonResponse += "{\"value2\":\"" + collected_data[1] + "\"},";
    sonResponse += "{\"value3\":\"" + collected_data[2] + "\"},";
    jsonResponse += "{\"value4\":\"" + collected_data[3] + "\"},";

    request->send(200, "application/json", jsonResponse);
  });

以及对应的功能:

int updateShiftRegister(int* signals, int length) {
  // Shift out each bit of the signals list
  int dataarea[amount_of_cells];
  int Vin;
  byte k = 0;

  for (int i = length - 1; i >= 0; i--) {
    digitalWrite(latchPin, LOW);
    
    digitalWrite(clockPin, LOW);
    digitalWrite(dataPin, signals[i] ? HIGH : LOW);
    digitalWrite(clockPin, HIGH);
    
    digitalWrite(latchPin, HIGH);

      if (i< length-1 && i>0){
        Vin = readpot();
        Serial.println(Vin);
        dataarea[k]=Vin;
        k++;
      }
  }

  return dataarea;
}

我想我可以检查这次失败的原因。但我只是不明白为什么会发生。

arrays compiler-errors arduino
1个回答
0
投票

所以,问题出在代码本身。如果你试图一步步覆盖局部区域,最好不要让一个巨大的物体漂浮在空中。显然,你不能像我尝试的那样覆盖它。 解决问题的方法很简单:使用

global variables
!然后稍后在代码中调用一些
void
函数来覆盖全局区域。就是这么简单。可悲的是。

© www.soinside.com 2019 - 2024. All rights reserved.