From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=50975 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Oq6bZ-00005Z-IR for qemu-devel@nongnu.org; Mon, 30 Aug 2010 11:49:08 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1Oq6bS-0005i3-8A for qemu-devel@nongnu.org; Mon, 30 Aug 2010 11:48:59 -0400 Received: from mail-qy0-f173.google.com ([209.85.216.173]:42072) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1Oq6bS-0005hv-28 for qemu-devel@nongnu.org; Mon, 30 Aug 2010 11:48:58 -0400 Received: by qyk5 with SMTP id 5so3066309qyk.4 for ; Mon, 30 Aug 2010 08:48:57 -0700 (PDT) Message-ID: <4C7BD2E7.2010201@codemonkey.ws> Date: Mon, 30 Aug 2010 10:48:55 -0500 From: Anthony Liguori MIME-Version: 1.0 References: <1283182547-26116-1-git-send-email-Jes.Sorensen@redhat.com> <1283182547-26116-11-git-send-email-Jes.Sorensen@redhat.com> <4C7BD0CE.6020505@codemonkey.ws> <4C7BD19C.9080308@redhat.com> In-Reply-To: <4C7BD19C.9080308@redhat.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: [Qemu-devel] Re: [PATCH 10/14] Zero json struct with memset() instea of = {} to keep compiler happy. List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Jes Sorensen Cc: kwolf@redhat.com, qemu-devel@nongnu.org On 08/30/2010 10:43 AM, Jes Sorensen wrote: > On 08/30/10 17:39, Anthony Liguori wrote: > >> On 08/30/2010 10:35 AM, Jes.Sorensen@redhat.com wrote: >> >>> From: Jes Sorensen >>> >>> This keeps the compiler happy when building with -Wextra while >>> effectively generating the same code. >>> >>> Signed-off-by: Jes Sorensen >>> >>> >> What's GCC's compliant? >> > cc1: warnings being treated as errors > qjson.c: In function 'qobject_from_jsonv': > qjson.c:39: error: missing initializer > qjson.c:39: error: (near initialization for 'state.parser') > make: *** [qjson.o] Error 1 > > We have a lot of these where we try to init a struct element {}. > > Yes it's technically legal. However it's painful when you try to apply > more aggressive warning flags looking for real bugs. > No, this is GCC being stupid. > I would suggest we modify the coding style to ask people to not init a > struct like this. > How else do you terminate a list? IOW: MyDeviceInfo device_infos[] = { {"foo", 0, 2}, {"bar", 0, 1}, {} /* or { 0 } */ }; This is such a pervasive idiom that there's simply no way that GCC can possibly try to warn against this. Plus, it's entirely reasonable. I think this is just a false positive in GCC. Otherwise, there's a ton of code that it should be throwing warnings against. Regards, Anthony Liguori > Cheers, > Jes >