29 lines
1.0 KiB
Plaintext
29 lines
1.0 KiB
Plaintext
A switch-label can be placed anywhere within the statements that form the body of a switch statement, potentially leading to unstructured code. To prevent this from happening, the scope of a case-label or default-label shall be the statement forming the body of a switch statement. All case-clauses and the default-clause shall be at the same scope.
|
|
|
|
|
|
== Noncompliant Code Example
|
|
|
|
----
|
|
switch (x) {
|
|
case 1: // Compliant
|
|
if (foo) {
|
|
case 2: // Noncompliant
|
|
break;
|
|
default: // Noncompliant
|
|
break;
|
|
}
|
|
break;
|
|
default: // Compliant
|
|
break;
|
|
}
|
|
----
|
|
|
|
|
|
== See
|
|
|
|
* MISRA C 2004, 15.1 - A switch label shall only be used when the most closely-enclosing compound statement is the body of a switch statement.
|
|
* MISRA {cpp} 2008, 6-4-4 - A switch-label shall only be used when the most closely-enclosing compound statement is the body of a switch statement.
|
|
* MISRA C 2012, 16.2 - A switch label shall only be used when the most closely-enclsoing compound statement is the body of a switch statement
|
|
|
|
|