arduino相关:expected constructor, destructor, or type conversion before '(' token


#include <IRremote.h>
#include <SPI.h> // 加载SPI库
#include <Wire.h> // 加载Wire库
#include <Adafruit_GFX.h> // 加载Adafruit_GFX库
#include <Adafruit_SSD1306.h> // 加载Adafruit_SSD1306库

int RECV_PIN = 7;
int buzzer=3;
int red=9;
int green=11;
Adafruit_SSD1306 OLEDdisplay(128, 64, &Wire);
IRrecv irrecv(RECV_PIN);
decode_results results;

void setup() {
  //Serial.begin(9600);
  //Serial.println("OLED FeatherWing test"); // 串口输出
  irrecv.enableIRIn();
  pinMode(red, OUTPUT);
  pinMode(green, OUTPUT);
  pinMode(buzzer, OUTPUT);
  OLEDdisplay.begin(SSD1306_SWITCHCAPVCC,0x3C); // 设置OLED的I2C地址,大部分地址都为0x3C
  OLEDdisplay.clearDisplay();
}

void loop() {
  OLEDdisplay.clearDisplay(); // 清空屏幕
  OLEDdisplay.setTextSize(1); // 设置字体大小
  OLEDdisplay.setTextColor(SSD1306_WHITE); // 设置字体颜色
  OLEDdisplay.setCursor(25,20); // 设置开始显示文字的坐标(列x,行y)
  OLEDdisplay.println("Welcome!"); // 输出的字符
  }
    digitalWrite (red, HIGH);
    digitalWrite (green, LOW);
    tone (buzzer,400);
    delay (500);
    noTone (buzzer);
    delay (500);
     if (irrecv.decode(&results)) {
  Serial.println(results.value, HEX);
  if (results.value ==0xFF18E7) 
  {
    digitalWrite(red, LOW);
    digitalWrite(green, HIGH);
    delay(1000);
    digitalWrite(green, LOW);
    delay(1000);
    noTone(buzzer);
  } 
  else if (results.value ==0xFF4AB5) 
  {
    digitalWrite(red, HIGH);
    digitalWrite(green, LOW);
    tone(buzzer,400);
  }
  irrecv.resume(); 
 }
 delay (100);
}

img


这样的错误应该怎么样修改啊。

问题可能出现在循环体外的花括号位置,loop() 函数的循环体被放在了函数之外的花括号中,导致编译器无法识别循环体。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^