【问题标题】:Switch with enum not working - Arduino Mega 2560枚举不工作的开关 - Arduino Mega 2560
【发布时间】:2025-04-17 01:05:02
【问题描述】:

这只是我的问题的“工作”示例。 在循环函数中更改按钮值,它应该打印到串行监视器“DOWN”和“UP”,但只打印第一个。但是如果在 change_timestamp_selected 函数中注释 bool 变量,程序就会按照它应该的方式运行......

如果有人能发现错误,请帮助我。谢谢。

enum btn {btnRIGHT, btnUP, btnDOWN, btnLEFT, btnSELECT, btnNONE} button;
void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
}


void loop() {
  button = btnDOWN;
  change_timestamp_selected();
  delay(1000);
  button = btnUP;
  change_timestamp_selected();
  delay(1000);
}
void change_timestamp_selected() {
  switch (button) {
    case btnDOWN:
      Serial.println("DOWN");
      bool if_commented_works = true;
      break;
    case btnUP:
      Serial.println("UP");
      break;
  }
}

【问题讨论】:

    标签: arduino arduino-ide


    【解决方案1】:

    老实说,这让我有点难过,但我自己编译后发现了这个问题。这是一个Error: Jump to case label 最受好评的回复,有一个很好的解释,但总结一下:你在编译器认为相同的范围内声明了这个变量,所以编译器知道它在那里,但是当它回到那个范围时它对为什么不声明它感到困惑。

    【讨论】:

    • 谢谢...在机箱内添加 { } 解决了问题...哟老板!哈哈哈
    • 谢谢,没问题。如果我真的坚持在返回错误的编译器上编译它,那么我在编写 Arduino 代码时发现它很有帮助。
    最近更新 更多