01-03-2019, 05:39 PM
Consider the following example:
The first case containing the goto appears to violate rule 6-4-5 which states that a case must end in a break or throw statement. If a break is added anywhere after the goto, it will be unreachable and would seemingly violate Rule 0-1-1 which forbids unreachable code. Rule 6-4-3 seems to consider the use of goto in a switch as it says that jump-statements (which includes goto) "are permitted within the compound statements forming the body of a switch-clause". Is it intended that an unconditional goto in a switch will require a deviation from either 6-4-5 or 0-1-1?
Code:
typedef unsigned short uint16_t;
uint16_t foo(uint16_t x) {
switch(x) {
case 1:
{ goto end; }
case 2:
++x;
break;
default:
break;
}
end:
++x;
return x;
}
<t></t>