https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79301
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jakub at gcc dot gnu.org, | |jason at gcc dot gnu.org, | |mpolacek at gcc dot gnu.org --- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> --- I think right now you need to use #ifdef __has_cpp_attribute # if __has_cpp_attribute(fallthrough) >= __cplusplus [[fallthrough]]; # elif __has_cpp_attribute(gnu::fallthrough) [[gnu::fallthrough]]; # endif #endif (the first #ifdef because __has_cpp_attribute is defined only in recent compilers, so you'll get errors trying to use it as function-like macro before, and __has_cpp_attribute should print YYYYMM when the feature has been introduced which you can compare against __cplusplus). That said, right now we use the same preprocessor hook for __has_attribute (which IMNSHO should return non-zero even for __has_attribute(fallthrough) because you can use __attribute__((fallthrough)), and between __has_cpp_attribute).