不建议使用 do 语句
9.4.1 ID_do_deprecated
do 语句的终止条件在末尾,且第一次执行时不检查终止条件,易被误用。
do 语句可用于循环,也可用于定义由 break 等语句跳出的作用域,糅合了循环和流程跳转,使代码变得复杂,不利于阅读和维护,建议将复杂的 do 语句抽取成函数,使代码的静态结构更加清晰。
宏定义中的 do-while(0) 可不受本规则限制。
示例:
void foo(int n) {
do {
if (n < 0) {
break;
}
....
if (n > 0) {
continue;
}
....
} while (condition); // Too complex
....
}