https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77817
--- Comment #17 from Jakub Jelinek <jakub at gcc dot gnu.org> --- (In reply to Anton Maklakov from comment #16) > Hi, > > I have the same problem: > > > int main() { > int s = 1; > > switch (s) { > case 2: > s = 2; > #if B > break; > #else > s = 4; > /* falls through */ > #endif > case 3: That works as documented: 'The comment needs to be followed after optional whitespace and other comments by "case" or "default" keywords or by a user label that precedes some "case" or "default" label.' So, either do what you've mentioned, or just move the comment right before the case, where it is recognized (and not anywhere else).