2017-06-13 31 views
10

gcc的較新版本提供Wimplicit-fallthrough,這對於大多數switch語句來說都是非常棒的。但是,我希望允許所有病例陳述中都有一個switch語句。如何在C中做一個明確的突破 -

有沒有辦法做一個明確的跌倒?我寧願避免爲此文件編譯Wno-implicit-fallthrough

編輯:我正在尋找一種方法來通過顯式(如果可能)使秋天,而不是通過編譯器開關或雜注關閉警告。

+0

也許[這](https://stackoverflow.com/a/3394268/1553090)是你想要的。 – paddy

+0

我找到了同一個。 https://stackoverflow.com/questions/3378560/how-to-disable-gcc-warnings-for-a-few-lines-of-code –

+0

請查看['-Wimplicit-fallthrough'](https: //gcc.gnu.org/onlinedocs/gcc-7.1.0/gcc/Warning-Options.html#index-Wimplicit-fallthrough)在GCC文檔中?不會有任何非延伸機制 - 整個問題都是延伸。 –

回答

8

使用__attribute__ ((fallthrough))

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

這是正確的答案,但是這個例子很糟糕:-Wimplicit-fallthrough不是針對空的殼體發出的,所以在這裏不需要。 – thakis

2

您應該可以使用GCC diagnostic pragmas來禁用源文件或源文件某些部分的特定警告。嘗試把這個在你的文件的頂部:

#pragma GCC diagnostic ignored "-Wimplicit-fallthrough"