2017-06-13 19 views
10

Các phiên bản gcc mới hơn cung cấp Wimplicit-fallthrough, điều tuyệt vời để có cho hầu hết các câu lệnh chuyển đổi. Tuy nhiên, tôi có một tuyên bố chuyển đổi, nơi tôi muốn cho phép thông tin rơi từ tất cả các trường hợp báo cáo.Cách thực hiện một sự sụp đổ rõ ràng trong C

Có cách nào để thực hiện thông báo rõ ràng không? Tôi muốn tránh phải biên dịch với Wno-implicit-fallthrough cho tệp này.

EDIT: Tôi đang tìm một cách để làm cho sự sụp đổ thông qua rõ ràng (nếu có thể), không tắt cảnh báo thông qua một chuyển đổi trình biên dịch hoặc pragma.

+0

lẽ [này] (https://stackoverflow.com/a/3394268/1553090) là những gì bạn muốn. – paddy

+0

Tôi đã tìm thấy cùng một trang. https://stackoverflow.com/questions/3378560/how-to-disable-gcc-warnings-for-a-few-lines-of-code –

+0

Xem mô tả tại ['-Wimplicit-fallthrough'] (https: //gcc.gnu.org/onlinedocs/gcc-7.1.0/gcc/Warning-Options.html#index-Wimplicit-fallthrough) trong tài liệu GCC? Sẽ không có bất kỳ cơ chế không mở rộng nào - toàn bộ vấn đề là tất cả các phần mở rộng. –

Trả lời

8

Sử dụng __attribute__ ((fallthrough))

switch (condition) { 
    case 1: __attribute__ ((fallthrough)); 
    case 2: __attribute__ ((fallthrough)); 
    case 3: 
     printf("1..3\n"); 
     break; 
} 
+1

Đây là câu trả lời đúng, nhưng ví dụ là xấu: -Wimplicit-fallthrough không được phát ra cho các phần thân trống, vì vậy không cần thiết ở đây. – thakis

2

Bạn sẽ có thể sử dụng GCC diagnostic pragmas để tắt cảnh báo cụ thể đó cho tệp nguồn của bạn hoặc một phần của tệp nguồn. Hãy thử đặt này ở phía trên cùng của tập tin của bạn:

#pragma GCC diagnostic ignored "-Wimplicit-fallthrough" 
Các vấn đề liên quan