qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] Headers without multiple inclusion guards


From: Daniel P . Berrangé
Subject: Re: [Qemu-devel] Headers without multiple inclusion guards
Date: Wed, 5 Jun 2019 17:23:48 +0100
User-agent: Mutt/1.11.4 (2019-03-13)

On Wed, Jun 05, 2019 at 06:18:38PM +0200, Laszlo Ersek wrote:
> On 06/05/19 16:23, Daniel P. Berrangé wrote:
> > On Tue, May 28, 2019 at 08:12:24PM +0200, Markus Armbruster wrote:
> >> We have a bunch of headers without multiple inclusion guards.  Some are
> >> clearly intentional, some look accidental.  Too many for me to find out
> >> by examining each of them, so I'm asking their maintainers.
> >>
> >> Why do I ask?  I'd like to mark the intentional ones and fix the
> >> accidental ones, so they don't flunk "make check-headers" from "[RFC v4
> >> 0/7] Baby steps towards saner headers" just because they lack multiple
> >> inclusion guards.
> >>
> >> Just in case: what's a multiple inclusion guard?  It's
> >>
> >>     #ifndef UNIQUE_GUARD_SYMBOL_H
> >>     #define UNIQUE_GUARD_SYMBOL_H
> >>     ...
> >>     #endif
> >>
> >> with nothing but comments outside the conditional, so that the header
> >> can safely be included more than once.
> > 
> > Any opinions on using the less verbose syntax instead:
> > 
> >   #pragma once
> > 
> > It is not portable C, but we explicitly only care about GCC or CLang,
> > so portability isn't an issue for us.
> 
> I don't feel strongly about this particular question, so if folks prefer
> "#pragma once", I won't complain. I'd just like to report that section 6
> of "HACKING" appears the opposite of "we explicitly only care about GCC
> or CLang".

Heh, yeah that doc does require some updating, as we certainly don't
require conformance to the vanilla C standard any more.  We now explicitly
request "-std=gnu99" as the conformance level which allows many GNU
extensions to the standard.

commit 7be41675f7cb16be7c8d2554add7a63fa43781a8
Author: Thomas Huth <address@hidden>
Date:   Mon Jan 7 11:25:22 2019 +0100

    configure: Force the C standard to gnu99
    
    Different versions of GCC and Clang use different versions of the C 
standard.
    This repeatedly caused problems already, e.g. with duplicated typedefs:
    
     https://lists.gnu.org/archive/html/qemu-devel/2018-11/msg05829.html
    
    or with for-loop variable initializers:
    
     https://lists.gnu.org/archive/html/qemu-devel/2019-01/msg00237.html
    
    To avoid these problems, we should enforce the C language version to the
    same level for all compilers. Since our minimum compiler versions is
    GCC v4.8, our best option is "gnu99" for C code right now ("gnu17" is not
    available there yet, and "gnu11" is marked as "experimental"), and "gnu++98"
    for the few C++ code that we have in the repository.


The HACKING docs predate this commit, and when reviewing, we failed to
notice we needed to update HACKING to match our new policy.

Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|



reply via email to

[Prev in Thread] Current Thread [Next in Thread]