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

时间:2016-09-19 11:49:36

标签: c++ c coding-style

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

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

2 个答案:

答案 0 :(得分:7)

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

对此一无所知:while(false)完全按照锡上的说法完成。

答案 1 :(得分:3)

是的,这是避免深度嵌套的常用技巧,实际上优于goto;

从可读性的角度来看,它比goto语句更好。循环的范围和代码流已经明确定义,您不需要查找goto语句的相应标签,这些标签不一定出现在下面。