Am 14.07.19 um 02:51 schrieb Jeff King: > I wonder if we could come up with a definition of INIT_ZERO such that: > > struct foo bar = { INIT_ZERO }; > > worked everywhere. IMHO that is more readable than "{}" anyway. Not when = {} becomes a well-established way to express zero-initialization. At that point, your suggested macro would obfuscate the construct. > But it does seem a real shame there is no way to say "zero-initialize > this struct" in C without providing at least a single member value. Indeed. For this reason, I'm arguing for the second-best form that places a 0 between the braces. > Ordering struct definitions to put an arithmetic type at the start is an > OK workaround (to just let "0" work everywhere). Why would you re-order members? There's nothing wrong when a pointer is initialized by 0. > But it does fall down > when the first element _has_ to be a struct (like, say, any user of our > hashmap.[ch] interface). No, it does not. It is not necessary to spell out nested structs in the initializer. -- Hannes