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 printf
di bagian atas switch
itu 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?
goto
masuk dan keluar dari bagian yang tidak terjangkau, yang mungkin berguna untuk berbagai peretasan.
switch
ini hanya sebuah kondisional goto
dengan 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