Re: [PATCH] range-diff: fix some 'hdr-check' and sparse warnings
- From
Jeff King <peff@peff.net>
- Date
- Jul 15, 2019, 14:46 UTC
- Message-ID
- <20190715144602.GA26636@sigill.intra.peff.net>
- In-Reply-To
- <54c2ee44-ee99-ea4a-3154-f642e0060877@kdbg.org>
On Sun, Jul 14, 2019 at 10:30:27AM +0200, Johannes Sixt wrote:
> Why would you re-order members? There's nothing wrong when a pointer is > initialized by 0.
To appease tooling like "sparse" without having to remember to do anything specific at the point-of-use sites. I'm open to the idea that it is not worth appeasing sparse, but this may be a simple and practical compromise.
Show 6 quoted lines
> > 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.
Ah, that is news to me. I know that this compiles OK with "gcc -Wall", but is it guaranteed by the standard?
-- >8 -- #include <stdio.h>
struct outer {
struct {
int x;
char *y;
} inner;
};int main(void)
{
struct outer foo = { 0 };
printf("%d %p\n", foo.inner.x, foo.inner.y);
return 0;
}
-- 8< --If so, then I agree that "0" is a pretty good solution, tooling like "sparse" aside. I do agree with your sentiment that "0" can be read as "please zero-initialize this struct" and not really as an attempt to set an initial member pointer to zero.
-Peff