จากการพิมพ์ผิดเล็กน้อยฉันพบโครงสร้างนี้โดยบังเอิญ:
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;
}
ดูเหมือนว่าprintf
ที่ด้านบนของswitch
คำสั่งนั้นถูกต้อง แต่ก็ไม่สามารถเข้าถึงได้อย่างสมบูรณ์
ฉันได้คอมไพล์สะอาดโดยไม่มีแม้แต่คำเตือนเกี่ยวกับรหัสที่ไม่สามารถเข้าถึงได้ แต่สิ่งนี้ดูเหมือนไม่มีจุดหมาย
คอมไพเลอร์ควรตั้งค่าสถานะนี้ว่าเป็นรหัสที่ไม่สามารถเข้าถึงได้หรือไม่
สิ่งนี้มีจุดประสงค์หรือไม่?
goto
เข้าและออกจากส่วนที่ไม่สามารถเข้าถึงได้ซึ่งอาจเป็นประโยชน์สำหรับแฮ็กต่างๆ
switch
เป็นเพียงเงื่อนไขgoto
ที่มีป้ายชื่อหลาย มีข้อ จำกัด ที่เหมือนกันไม่มากก็น้อยเช่นเดียวกับที่คุณมีในโค้ดปกติที่เต็มไปด้วยฉลากของ goto
-Wswitch-unreachable