https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109316
Bug ID: 109316 Summary: incorrect "warning: declaration does not declare anything" for anonymous enums in structs, for -std=(gnu|c)-17 Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: jason.vas.dias at gmail dot com Target Milestone: --- Just a niggle: I don't think this code should produce a warning, but under GCC 12, with -std=gnu17 or -std=c17, or without any '-std=' setting in C language mode, it does: 'struct S { int a; enum { S_O_a = 0 }; }'; /tmp/b.c:1:37: warning: declaration does not declare anything 1 | struct S { int a; enum { S_O_a = 0 }; }; | Yes, I know the enumeration declaration does not add anything to the struct declaration, (intentionally!), but in fact GCC HAS inserted DWARF debuginfo for the enumerator 'S_O_a' in the debug_info section , which can be used by code in which case the constant is interpolated into the output machine code, so something HAS been declared here ...