Re: [iproute PATCH v3 0/6] Big C99 style initializer rework
From: Phil Sutter <phil@nwl.cc>
Date: 2016-06-28 17:57:03
On Tue, Jun 28, 2016 at 11:37:43AM -0600, David Ahern wrote:
On 6/28/16 11:37 AM, Phil Sutter wrote:quoted
quoted
quoted
I saw these too with gcc-3.4.6 but not with 5.3.0. It appears to be a gcc bug[1]. One possible workaround is to match the brace level of the first field, but it's quite ugly: [2]. Another way might be to initialize one of the fields to zero, like so: | struct ifreq ifr = { .ifr_qlen = 0 }; What do you think? Thanks, Phil [1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53119 [2] http://nwl.cc/cgi-bin/git/gitweb.cgi?p=iproute2.git;a=commitdiff;h=a1cbf2b63c995b2f633c5b4699248ab308b201d2;hp=3809cfec65b03716d1d0360338126df4b4f3fbf6I am using gcc on Debian stable which is 5.3.1.Hmm. In a fresh install of Debian 8.5 I see the warnings as well, but it has gcc-4.9.2-10 as most recent version. Another thing I noticed: Using empty braces ('{}') instead of the universal zero initializer seems to work without causing warnings (at least unless '-pedantic' is used).since .ifr_qlen is already referenced in that function seems like your suggestion above (struct ifreq ifr = { .ifr_qlen = 0 };) should be acceptable.
You mean regarding compatibility of using that define? Or are you concerned with gcc creating suboptimal code? I'd rather use a more generic approach than the above. Retrospectively, I'd rather have that brace orgy instead of the above since it's intention is more clear and it can be dropped once either gcc guys manage to backport their fix or the last distribution has updated it's compiler. Cheers, Phil