Melalui kesalahan ketik kecil, saya tidak sengaja menemukan konstruk ini:
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;
}
Tampaknya pernyataan printfdi bagian atas switchitu valid, tetapi juga sama sekali tidak terjangkau.
Saya mendapat kompilasi bersih, bahkan tanpa peringatan tentang kode yang tidak dapat dijangkau, tetapi ini sepertinya tidak ada gunanya.
Haruskah kompiler menandai ini sebagai kode yang tidak terjangkau?
Apakah ini ada gunanya sama sekali?
gotomasuk dan keluar dari bagian yang tidak terjangkau, yang mungkin berguna untuk berbagai peretasan.
switchini hanya sebuah kondisional gotodengan banyak label. Ada batasan yang kurang lebih sama pada tubuh itu seperti yang Anda miliki pada blok kode reguler yang diisi dengan label goto.
-Wswitch-unreachable