 
                            ...
| Code Block | ||
|---|---|---|
| 
 | ||
| 
enum WidgetEnum { WE_W, WE_X, WE_Y, WE_Z } widget_type;
widget_type = WE_X;
switch (widget_type) {
  case WE_W:
    /* ... */
  case WE_X:
    /* ... */
    break;
  case WE_Y: 
  case WE_Z:
    /* ... */
    break;
  default: /* can't happen */
	 /* handle error condition */
}
 | 
Compliant Solution
In this compliant solution, each sequence of statements following a case label ends with a break statement.
| Code Block | ||
|---|---|---|
| 
 | ||
| 
enum WidgetEnum { WE_W, WE_X, WE_Y, WE_Z } widget_type;
widget_type = WE_X;
switch (widget_type) {
  case WE_W:
    /* ... */
    break;
  case WE_X:
    /* ... */
    break;
  case WE_Y: 
  case WE_Z:
    /* ... */
    break;
  default: /* can't happen */
	 /* handle error condition */
}
 | 
A break statement is not required following the case where widget_type is WE_Y because there are no statements before the next case label, indicating that both WE_Y and WE_Z should be handled in the same fashion.
A break statement is not required following the default case because it would not effect the control flow.
Exceptions
MSC17:EX1: The last label in a switch statement requires no final break. This will conventionally be the default label.
...