Date: Mon, 22 Feb 2016 23:57:43 +0100 From: Dimitry Andric <dim@FreeBSD.org> To: David Chisnall <theraven@FreeBSD.org> Cc: Alan Somers <asomers@freebsd.org>, Sergey Kandaurov <pluknet@gmail.com>, "src-committers@freebsd.org" <src-committers@freebsd.org>, "svn-src-all@freebsd.org" <svn-src-all@freebsd.org>, "svn-src-head@freebsd.org" <svn-src-head@freebsd.org> Subject: Re: svn commit: r295768 - head/usr.sbin/iostat Message-ID: <B8CAD299-A388-4437-9660-BFFBFDE89EB7@FreeBSD.org> In-Reply-To: <156A6796-D62B-4977-893B-E4E727578412@FreeBSD.org> References: <201602182008.u1IK81vg092127@repo.freebsd.org> <CAE-mSO%2B7p=Equq81PPQjfZv1piPydBr4Mnk363CEs3w9EXRi9w@mail.gmail.com> <CAOtMX2hyZ=GFgp8F6t0dMDYF5FSPdoP9KdMU7V5rmscpaPUnsw@mail.gmail.com> <83BB8467-4C40-4CF1-B394-1376C9D97FCF@FreeBSD.org> <156A6796-D62B-4977-893B-E4E727578412@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
[-- Attachment #1 --]
On 22 Feb 2016, at 10:56, David Chisnall <theraven@FreeBSD.org> wrote:
>
> On 19 Feb 2016, at 23:23, Dimitry Andric <dim@FreeBSD.org> wrote:
>>
>> This warning is only produced when you use -Wall -W, and then initialize
>> structs partially, i.e. you initialize some fields but not others. I
>> think this is a quite reasonable warning for a high warning level.
>
> The warning is annoying in many ways. You ought to be able to zero initialise any struct with {0}, but clang objects if you do this and requires every field to be filled in. This warning really shouldn’t be enabled with -Wall, because it has too hight a false positive rate.
It isn't, it is in -W (a.k.a -Wextra). But gcc also warns in this case. E.g. if I use this example:
struct foo {
int i;
int j;
} bar[] = {
{ 42 },
{ 43 }
};
I get the following warnings from gcc -Wextra:
$ gcc -Wextra -c initializers.c
initializers.c:5:2: warning: missing initializer for field 'j' of 'struct foo' [-Wmissing-field-initializers]
{ 42 },
^
initializers.c:3:6: note: 'j' declared here
int j;
^
initializers.c:6:2: warning: missing initializer for field 'j' of 'struct foo' [-Wmissing-field-initializers]
{ 43 }
^
initializers.c:3:6: note: 'j' declared here
int j;
^
Note that the warnings disappear if C99 initializers are used.
-Dimitry
[-- Attachment #2 --]
-----BEGIN PGP SIGNATURE-----
Version: GnuPG/MacGPG2 v2.0.29
iEYEARECAAYFAlbLknQACgkQsF6jCi4glqM5bQCghdAFmccwUc2pODSEp86SEgSw
miUAoKK7lNvPr4ojr/PKxizoVorQy112
=+hXe
-----END PGP SIGNATURE-----
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?B8CAD299-A388-4437-9660-BFFBFDE89EB7>
