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 switchAussage 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?
gotoin den ansonsten nicht erreichbaren Teil ein- und aussteigen, was für verschiedene Hacks nützlich sein kann.
switchist nur eine Bedingung gotomit 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