2017-06-13 73 views
10

Nowsze wersje gcc oferują Wimplicit-fallthrough, co świetnie nadaje się do większości instrukcji przełączania. Mam jednak jedno oświadczenie przełącznika, w którym chcę zezwolić na wszystkie przypadki.Sposób wykonania jawnego przekroju w C

Czy istnieje sposób na wyraźny upadek? Wolałbym uniknąć konieczności kompilowania z tym plikiem Wno-implicit-fallthrough.

EDYCJA: Szukam sposobu, aby spadek przez wyraźne (jeśli to możliwe), aby nie wyłączyć ostrzeżenie za pomocą przełącznika kompilatora lub pragma.

+0

Być może [to] (https://stackoverflow.com/a/3394268/1553090) to, co chcesz. – paddy

+0

Znalazłem ten sam. https://stackoverflow.com/questions/3378560/how-to-disable-gcc-warnings-for-a-few-lines-of-code –

+0

Sprawdź opis w ['-Wimplicit-fallthrough'] (https: //gcc.gnu.org/onlinedocs/gcc-7.1.0/gcc/Warning-Options.html#index-Wimplicit -fallthrough) w dokumentacji GCC? Nie będzie żadnego mechanizmu nierozszerzania - cały problem to całe rozszerzenie. –

Odpowiedz

8

Korzystając __attribute__ ((fallthrough))

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

To jest właściwa odpowiedź, ale przykład jest zły: -Wypełniony-fallthrough nie jest emitowany dla pustych ciał, więc nie jest tu potrzebny. – thakis

2

Powinieneś być w stanie użyć GCC diagnostic pragmas, aby wyłączyć to ostrzeżenie dla pliku źródłowego lub części pliku źródłowego. Spróbuj umieścić to na górze pliku:

#pragma GCC diagnostic ignored "-Wimplicit-fallthrough"