régimen - objetivo de la declaracion de cambio
interrupción independiente dentro de una declaración de cambio (2)
Esa afirmación, junto con cualquier otra declaración que no esté en una cláusula de case
en la instrucción switch
, es un código inalcanzable, también conocido como código muerto. Eso significa que no se ejecutarán de todos modos. No se recomienda usarlos.
Me encontré con este código, que funciona como se esperaba:
switch (ev->deviceType) {
break;
case DEVICE_TS1E0:
//some code
break;
case DEVICE_TS1E3:
//some code
break;
default:
//some logging
break;
}
Ahora, hay un break;
solitario break;
al inicio del cambio, que parece no tener ningún efecto.
¿Hay alguna circunstancia donde ese break;
tendría un efecto?
TL; DR Esa declaración de break
es ineficaz y un código muerto. El control nunca llegará allí.
C11
estándar C11
tiene un buen ejemplo de un caso similar, permítanme citarlo así de simple.
Del Capítulo §6.8.4.2 / 7, ( énfasis mío )
EJEMPLO en el fragmento de programa artificial
switch (expr) { int i = 4; f(i); case 0: i = 17; /* falls through into default code */ default: printf("%d/n", i); }
el objeto cuyo identificador es
i
existe con la duración de almacenamiento automático (dentro del bloque) pero nunca se inicializa, y por lo tanto, si la expresión de control tiene un valor distinto de cero, la llamada a la funciónprintf
tendrá acceso a un valor indeterminado. Del mismo modo, la llamada a la funciónf
no puede ser alcanzada.