https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105510
--- Comment #2 from 。 <570070308 at qq dot com> --- (In reply to Richard Biener from comment #1) > As a workaround it works with > > struct Test t=(struct Test){1, {3, 4}}; > > I don't think it your way of writing is actually valid though. Yes, I'm not sure that this is a Bug. I meet this error when I'm using macro to init a struct. For example: ```test.c struct Test2 { long int x; long int y; }; struct Test { long int x; struct Test2 t; }; #define TEST2_INIT(x, y) ((struct Test2){x, y}) #define TEST_INIT(x) ((struct Test){x, TEST2_INIT(1, 2)}) struct Test test=TEST_INIT(0); // error ```