是否有人可以帮助我解决我认为对于熟悉C语言的人来说琐碎的问题。 我有一些代码,但label_start_menu:对我不起作用。 我想要实现的是恢复默认:现在,例如, 3 == 3 while循环工作无限,无法返回默认值:
switch (counter1) {
case 1:
menu_clock();
delay(2000);
while(true){
Serial.println("loop1");
Serial.println("loop1");
Serial.println("loop1");
if(3 == 3)
{
break;
goto label_start_menu;
}
}
break;
case 2:
menu_media();
delay(2000);
break;
default:
label_start_menu:
menu_start();
break;
}
}
谢谢, ojdas
答案 0 :(得分:1)
if(3 == 3)
{
break;
goto label_start_menu;
}
goto
永远不会被执行,因为break
语句会在那里突破你的循环。
我的建议是摆脱goto
,并在if语句中调用menu_start()
,然后中断,而不是使用goto。
答案 1 :(得分:1)
我不确定您尝试使用while循环确切地做了什么,但是您已经在break;
声明前面发表了goto label_start_menu;
声明,所以永远不会到达。
更完整的答案:首先绝对不需要goto。你已经在调用另一个功能了。重写整个事情:
switch (counter1)
{
case 1:
menu_clock();
delay(2000);
Serial.println("loop1");
Serial.println("loop1");
Serial.println("loop1");
menu_start();
break;
case 2:
menu_media();
delay(2000);
break;
default:
menu_start();
break;
}
答案 2 :(得分:0)
休息应该是最后一件事。
另外,为什么要把它放在循环中?这是一个无限循环..只要调用它然后断开就会让你离开开关并且不会继续,所以确保你在休息之前做了所有事情,所以在休息之前放置goto label_start_menu;
并删除if声明和其他突破。
如果你想循环它,那么你可以使用其他循环方法..谷歌很棒!
答案 3 :(得分:0)
我要重新发布@40two's answer,因为它恰好触及了goto
的使用(除了以同样方式出现的其他缺陷(没有合理的循环中断条件))。
@ 40two:XKCD是一个非常好的洞察力来源,因为你可以阅读它!