Re: [PATCH] range-diff: fix some 'hdr-check' and sparse warnings
- From
Johannes Sixt <j6t@kdbg.org>
- Date
- Jul 14, 2019, 08:30 UTC
- Message-ID
- <54c2ee44-ee99-ea4a-3154-f642e0060877@kdbg.org>
- In-Reply-To
- <20190714005129.GA4525@sigill.intra.peff.net>
Am 14.07.19 um 02:51 schrieb Jeff King:
Show 5 quoted lines
> 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