Durch einen kleinen Tippfehler habe ich versehentlich dieses Konstrukt gefunden:
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;
}
Es scheint, dass die printf
oben in der switch
Aussage gültige, aber auch völlig unerreichbare ist.
Ich habe eine saubere Kompilierung erhalten, ohne auch nur eine Warnung vor nicht erreichbarem Code, aber das scheint sinnlos.
Sollte ein Compiler dies als nicht erreichbaren Code kennzeichnen?
Hat dies überhaupt einen Zweck?
goto
in den ansonsten nicht erreichbaren Teil ein- und aussteigen, was für verschiedene Hacks nützlich sein kann.
switch
ist nur eine Bedingung goto
mit mehreren Beschriftungen. Es gibt mehr oder weniger dieselben Einschränkungen für den Körper wie für einen normalen Codeblock, der mit goto-Labels gefüllt ist.
-Wswitch-unreachable