https://gcc.gnu.org/bugzilla/show_bug.cgi?id=72754
Bug ID: 72754 Summary: pointer to an unnamed struct with a sole flexible array member accepted Product: gcc Version: 7.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: msebor at gcc dot gnu.org Target Milestone: --- The following program defines two pointers to unnamed structs containing a flexible array as their sole member. The structs are invalid and are rejected with an error in C mode but silently accepted by G++. $ cat t.C && /build/gcc-trunk-svn/gcc/xgcc -B /build/gcc-trunk-svn/gcc -S -Wall -Wextra -Wpedantic t.C struct { int a[]; } *p; struct S { struct { int a[]; } *q; }; t.C:1:22: warning: āpā defined but not used [-Wunused-variable] struct { int a[]; } *p; ^ Clang produces the following output: t.C:1:14: warning: flexible array member 'a' in otherwise empty struct is a GNU extension [-Wgnu-empty-struct] struct { int a[]; } *p; ^ t.C:1:14: warning: flexible array members are a C99 feature [-Wc99-extensions] t.C:4:16: warning: flexible array member 'a' in otherwise empty struct is a GNU extension [-Wgnu-empty-struct] struct { int a[]; } *q; ^ t.C:4:16: warning: flexible array members are a C99 feature [-Wc99-extensions] t.C:1:22: warning: unused variable 'p' [-Wunused-variable] struct { int a[]; } *p; ^ 5 warnings generated.