|
From: | Avi Kivity |
Subject: | Re: [Qemu-devel] Re: [PATCH 10/14] Zero json struct with memset() instea of = {} to keep compiler happy. |
Date: | Mon, 30 Aug 2010 20:12:08 +0300 |
User-agent: | Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.8) Gecko/20100806 Fedora/3.1.2-1.fc13 Thunderbird/3.1.2 |
On 08/30/2010 06:53 PM, Jes Sorensen wrote:
On 08/30/10 17:48, Anthony Liguori wrote:On 08/30/2010 10:43 AM, Jes Sorensen wrote: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 againstI believe the comma after the last case takes care of terminating the list.
It only makes patches that add items prettier.
I agree that it would be nice to get gcc to not moan about this specific case, however I will argue that my change is worth it to be able to use the error flags, even if it is gcc being stupid.
If the flags make gcc stupid, why use them? -- I have a truly marvellous patch that fixes the bug which this signature is too narrow to contain.
[Prev in Thread] | Current Thread | [Next in Thread] |