switch 语句的子句均应从属于某个 case 或 default 分枝
9.5.4 ID_switch_invalidStatement
switch 语句的所有子句都应从属于某个 case 或 default 分枝,否则不会被执行。
示例:
switch (v)
{
int i; // Non-compliant
i = 0; // Non-compliant
case 1:
....
break;
default:
bar(i); // Logic error, ‘i’ is not initialized
break;
}
例中对变量 i 的声明和赋值不从属于任何 case 或 default 分枝,是无效语句。
参考
CWE-561
MISRA C 2012 16.1
MISRA C++ 2008 6-4-3