Subject: Re: -Wno-missing-init?
To: None <tech-toolchain@NetBSD.org>
From: Alan Barrett <apb@cequrux.com>
List: tech-toolchain
Date: 03/15/2007 08:36:19
On Wed, 14 Mar 2007, der Mouse wrote:
> I'm going to add -W{no-,}missing-init, for fine-grained control over
> incomplete initializer warnings.  In particular, I don't want those
> warnings, but I do want the rest of the stuff -W gets me

That sounds useful.

I'd actually like to get warnings about missing braces and missing
initialisers in most cases, but not in the case where a struct is
initialised by {0}.  For example, I want a warning about missing braces
if I do

	struct s {int i;};
	struct s array[2] = {1, 2}; /* should be {{1}, {2}} */

and I want a warning about incomplete initialisers for this:

	struct t {int i, j;};
	struct t array[2] = {{1}, {2}}; /* should be {{1, 0}, {2, 0}} */

but I don't want any warning at all if I do

	struct opaque foo = {0};
	struct opaque array[2] = {{0}, {0}};


NetBSD's code is riddled with struct assignments that use

	structvar = {.somefield = 0};

to get the effects that should be available from

	structvar = {0};

I consider the version with {0} to be better style, the C99 standard
specifies the same meaning for both, but the version with {0} triggers
from warnings from gcc.

--apb (Alan Barrett)