How to do an explicit fall-through in C

GCC fallghrough magic comments

You should not use this if you can help it, it is insane, but good to know about:

int main(int argc, char **argv) {
    (void)argv;
    switch (argc) {
        case 0:
            argc = 1;
            // fall through
        case 1:
            argc = 2;
    };
}

prevents the warning on GCC 7.4.0 with:

gcc -Wall -Wextra main.c

man gcc describes how different comments may or not be recognized depending on the value of:

-Wimplicit-fallthrough=n

C++17 [[fallthrough]] attribute

C++17 got a standardized syntax for this: GCC 7, -Wimplicit-fallthrough warnings, and portable way to clear them?


You should be able to use GCC diagnostic pragmas to disable that particular warning for your source file or some portion of a source file. Try putting this at the top of your file:

#pragma GCC diagnostic ignored "-Wimplicit-fallthrough"

Use __attribute__ ((fallthrough))

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