Thông qua một lỗi đánh máy, tôi vô tình tìm thấy cấu trúc này:
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;
}
Có vẻ như printf
ở đầu switch
tuyên bố là hợp lệ, nhưng cũng hoàn toàn không thể truy cập được.
Tôi đã có một biên dịch sạch, thậm chí không có cảnh báo về mã không thể truy cập, nhưng điều này dường như vô nghĩa.
Một trình biên dịch có thể đánh dấu mã này là mã không thể truy cập?
Điều này có phục vụ mục đích nào không?
goto
vào và ra khỏi phần không thể truy cập khác, có thể hữu ích cho các bản hack khác nhau.
switch
chỉ là một điều kiện goto
với nhiều nhãn. Có ít nhiều hạn chế giống nhau trên cơ thể của nó như bạn có trên một khối mã thông thường chứa đầy nhãn goto.
-Wswitch-unreachable