http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51034
--- Comment #1 from joseph at codesourcery dot com <joseph at codesourcery dot com> 2011-11-09 00:41:18 UTC --- Also applies with sizeof: struct S { int x[sizeof((struct S){})];} s; and when the type in the compound literal is not the type being defined: struct S { int x[sizeof((struct T){})];} s; All the invalid cases will still be diagnosed with -std=c99 -pedantic-errors because either the empty braces will be diagnosed or excess elements in an initializer will be diagnosed. But there ought to be an unconditional hard error for using an incomplete type, other than an array of unknown size, like that in a compound literal.