2017-06-13 56 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"