gcc的較新版本提供Wimplicit-fallthrough
,這對於大多數switch語句來說都是非常棒的。但是,我希望允許所有病例陳述中都有一個switch語句。如何在C中做一個明確的突破 -
有沒有辦法做一個明確的跌倒?我寧願避免爲此文件編譯Wno-implicit-fallthrough
。
編輯:我正在尋找一種方法來通過顯式(如果可能)使秋天,而不是通過編譯器開關或雜注關閉警告。
gcc的較新版本提供Wimplicit-fallthrough
,這對於大多數switch語句來說都是非常棒的。但是,我希望允許所有病例陳述中都有一個switch語句。如何在C中做一個明確的突破 -
有沒有辦法做一個明確的跌倒?我寧願避免爲此文件編譯Wno-implicit-fallthrough
。
編輯:我正在尋找一種方法來通過顯式(如果可能)使秋天,而不是通過編譯器開關或雜注關閉警告。
使用__attribute__ ((fallthrough))
switch (condition) {
case 1: __attribute__ ((fallthrough));
case 2: __attribute__ ((fallthrough));
case 3:
printf("1..3\n");
break;
}
這是正確的答案,但是這個例子很糟糕:-Wimplicit-fallthrough不是針對空的殼體發出的,所以在這裏不需要。 – thakis
您應該可以使用GCC diagnostic pragmas來禁用源文件或源文件某些部分的特定警告。嘗試把這個在你的文件的頂部:
#pragma GCC diagnostic ignored "-Wimplicit-fallthrough"
也許[這](https://stackoverflow.com/a/3394268/1553090)是你想要的。 – paddy
我找到了同一個。 https://stackoverflow.com/questions/3378560/how-to-disable-gcc-warnings-for-a-few-lines-of-code –
請查看['-Wimplicit-fallthrough'](https: //gcc.gnu.org/onlinedocs/gcc-7.1.0/gcc/Warning-Options.html#index-Wimplicit-fallthrough)在GCC文檔中?不會有任何非延伸機制 - 整個問題都是延伸。 –