https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107952
--- Comment #5 from Siddhesh Poyarekar <siddhesh at gcc dot gnu.org> --- (In reply to rguent...@suse.de from comment #4) > Does it allow the nesting when nested in a union? data[] cannot be nested directly in a union (i.e. union { char d; char data[]; } is invalid) but something like below is allowed, again as a gcc extension, not by the standard. The standard AFAICT doesn't allow anything other than the flex array directly at the end of the top level struct. typedef struct { unsigned pad; union { struct {char d; char data[];} f1; struct {char d; char data[];} f2; } flex; } S2; In fact this is the use case that led me into this rabbithole.