通常的做法是"滥用"循环作为goto

Val*_*itz 8 c c++ coding-style

如果在代码中有许多if子句并且代码的执行在先前的错误中是不明智的,那么使用单周期循环是否可以?只是为了能够休息时退出街区?像这样:

do {
    //..code
    if (error1) break;
    //..code
    if (errorN) break;
    //do finally something when no errors before
} while (false);
Run Code Online (Sandbox Code Playgroud)

Bat*_*eba 7

是的,这是惯用的,即使它可能不是do while循环的预期用途.linux内核的源代码利用了它.

关于它没有什么不清楚的地方:while(false)确切地说是什么.

  • @ThomasWilmotte当你必须做很多这样的检查时,所有嵌套的缩进级别都很麻烦并且有可读性.您要么必须水平滚动(yuck),要么比其他方式更早地换行.(另见http://stackoverflow.com/a/18507973/179715) (3认同)
  • 那么,你必须在范围内有一个合适的`错误',而`if`没有'break`. (2认同)