Attraverso un piccolo errore di battitura, ho trovato per caso questo costrutto:
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;
}
Sembra che la printfparte superiore switchdell'istruzione sia valida, ma anche completamente irraggiungibile.
Ho ottenuto una compilazione pulita, senza nemmeno un avvertimento sul codice irraggiungibile, ma questo sembra inutile.
Un compilatore dovrebbe contrassegnarlo come codice irraggiungibile?
Questo serve a qualche scopo?
gotoe uscire dalla parte altrimenti irraggiungibile, che può essere utile per vari hack.
switchè solo un condizionale gotocon più etichette. Ci sono più o meno le stesse restrizioni sul suo corpo come su un normale blocco di codice pieno di etichette goto.
-Wswitch-unreachable