do-while 循环体应该用大括号括起来
9.4.3 ID_do_brace
do-while 循环体应为大括号括起来的复合语句,即使该复合语句只包含一条语句。
示例:
do // Non-compliant
if (cond)
break;
while (*p++ = *q++);
while (true);
例中 while 关键字与 do 关键字产生了错误的对应关系,导致最后一个 while 形成了死循环,应改为:
do { // Compliant
if (cond) {
break;
}
while (*p++ = *q++);
}
while (true);
相关
参考
MISRA C 2004 14.9
MISRA C 2012 15.6
MISRA C++ 2008 6-3-1