这只是我的问题的一个“起作用”的例子。 在循环功能中,更改按钮值,它应打印到串行监视器“ 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;
}
}
答案 0 :(得分:1)
老实说,这让我有些困惑,但是我自己编译后就发现了问题。这是Error: Jump to case label的最高评价,有一个很好的解释,但总结一下:您在编译器视为相同作用域的地方声明了此变量,以便编译器知道它存在,但是当它返回到在那个范围上,为什么不声明它感到困惑。