A través de un pequeño error tipográfico, encontré accidentalmente esta construcción:
int main(void) {
char foo = 'c';
switch(foo)
{
printf("Cant Touch This\n"); // This line is Unreachable
case 'a': printf("A\n"); break;
case 'b': printf("B\n"); break;
case 'c': printf("C\n"); break;
case 'd': printf("D\n"); break;
}
return 0;
}
Parece que la printf
parte superior de la switch
declaración es válida, pero también completamente inalcanzable.
Obtuve una compilación limpia, sin siquiera una advertencia sobre el código inalcanzable, pero esto parece inútil.
¿Debe un compilador marcar esto como código inalcanzable?
¿Tiene esto algún propósito?
goto
entrar y salir de la parte inalcanzable, que puede ser útil para varios hacks.
switch
es solo un condicional goto
con múltiples etiquetas. Hay más o menos las mismas restricciones en su cuerpo que las que tendría en un bloque de código regular lleno de etiquetas de goto.
-Wswitch-unreachable