我正在写一些代码,看起来像这样:
while(true) {
switch(msg->state) {
case MSGTYPE: // ...
break;
// ... more stuff ...
case DONE:
break; // **HERE, I want to break out of the loop itself**
}
}
有什么直接的方法可以做到吗?
我知道我可以使用一个标志,然后通过在开关后面加上一个有条件的break来中断循环。我只想知道C++是否已经对此进行了一些构造。
发布于 2009-09-14 06:53:41
您可以使用goto
。
while ( ... ) {
switch( ... ) {
case ...:
goto exit_loop;
}
}
exit_loop: ;
发布于 2009-09-14 07:41:53
另一种解决方案是将关键字continue
与break
结合使用,即:
for (;;) {
switch(msg->state) {
case MSGTYPE:
// code
continue; // continue with loop
case DONE:
break;
}
break;
}
使用continue
语句结束希望循环继续的每个case标签,并使用break
语句结束应终止循环的case标签。
当然,只有在switch语句之后没有要执行的额外代码时,此解决方案才有效。
发布于 2009-09-14 06:56:48
要做到这一点,一种简洁的方法是将其放入函数中:
int yourfunc() {
while(true) {
switch(msg->state) {
case MSGTYPE: // ...
break;
// ... more stuff ...
case DONE:
return;
}
}
}
可选的(但“糟糕的做法”):正如已经建议的,你可以使用goto,或者在开关中抛出一个异常。
https://stackoverflow.com/questions/1420029
复制相似问题