https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82283
rsandifo at gcc dot gnu.org <rsandifo at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |rsandifo at gcc dot gnu.org --- Comment #12 from rsandifo at gcc dot gnu.org <rsandifo at gcc dot gnu.org> --- Here's another example, from Alexey Neyman [https://gcc.gnu.org/pipermail/gcc-help/2022-February/141197.html]: struct foo { const char *a1; const char * const *a2; void *a3; void *a4; }; const char *aux[] = { "y", 0 }; struct foo a = { .a1 = "x", #if defined(CASE1) .a2 = (const char * const []){ "y", 0 }, #elif defined(CASE2) .a2 = aux, #elif defined(CASE3) .a2 = 0, #elif defined(CASE4) /* .a2 not initialized */ #elif defined(CASE5) .a2 = (const char * const []){ "y", 0 }, .a3 = 0, #endif }; struct foo b = { .a2 = (const char * const []){ "y", 0 }, .a1 = "x", }; Only CASE1 of a warns; the others are (correctly) accepted without warnings.