https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89667
--- Comment #3 from Rick Greer <rick at regreer dot net> --- Thanks guys, the compound literal works for me. But can you explain why: static char *foo[] = { (char []){"this compiles ..."} }; void but() { static char *bar[] = { (char []){"this doesn't!"} }; } I.e, why is the (char []) a non-constant element when it appears in a function?