如果在代码中有许多if子句并且代码的执行在先前的错误中是不合理的,那么使用单周期循环是否可以?只是为了能够休息时退出街区? 像这样:
do {
//..code
if (error1) break;
//..code
if (errorN) break;
//do finally something when no errors before
} while (false);
答案 0 :(得分:7)
是的,这是惯用的,即使它可能不是do
while
循环的预期用途。 linux内核的源代码利用了它。
对此一无所知:while(false)
完全按照锡上的说法完成。
答案 1 :(得分:3)
是的,这是避免深度嵌套的常用技巧,实际上优于goto;
。
从可读性的角度来看,它比goto
语句更好。循环的范围和代码流已经明确定义,您不需要查找goto
语句的相应标签,这些标签不一定出现在下面。