On Mon, 8 Jul 2019 at 11:33, <t...@cock.li> wrote: > > There was recently a discussion with confusion regarding initialization > with {} instead of {0} when initializing an empty array or struct. The > former is not valid in C, but GCC permits it anyway even though it's not > explained anywhere in the specs: > char something[20] = {};
There is a warning with -Wpedantic: init.c:1:22: warning: ISO C forbids empty initializer braces [-Wpedantic] char something[20] = {}; ^ > Is it missing from the specs or did I just fail to locate it? I checked > all the C extension pages but none of them had it. I think allowing {} is a necessary extension as a consequence of: https://gcc.gnu.org/onlinedocs/gcc/Zero-Length.html and https://gcc.gnu.org/onlinedocs/gcc/Empty-Structures.html Allowing it for non-empty arrays does seem to be undocumented though.