Por meio de um pequeno erro de digitação, encontrei acidentalmente esse construto:
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 a printfparte superior da switchdeclaração é válida, mas também completamente inacessível.
Eu obtive uma compilação limpa, sem sequer um aviso sobre código inacessível, mas isso parece inútil.
Um compilador deve sinalizar isso como código inacessível?
Isso serve a algum propósito?
gotoentrar e sair da parte inacessível, que pode ser útil para vários hacks.
switché apenas uma condição gotocom vários rótulos. Existem mais ou menos as mesmas restrições em seu corpo que você teria em um bloco de código regular preenchido com rótulos de goto.
-Wswitch-unreachable