[Development] #pragma once

Mitch Curtis mitch.curtis at qt.io
Thu Jan 25 11:53:54 CET 2018


> -----Original Message-----
> From: Development [mailto:development-bounces+mitch.curtis=qt.io at qt-
> project.org] On Behalf Of Mathias Hasselmann
> Sent: Thursday, 25 January 2018 11:27 AM
> To: development at qt-project.org
> Subject: Re: [Development] #pragma once
> 
> Let's see what people who know much more about compiler features than
> any of us think about "#pragma once". Let's check what GCC and Clang do for
> their C++ library headers:
> 
>    $ grep -r pragma.*once /usr/include/clang/5.0.0/include
> /usr/include/c++/7.2.0/
>    $
> 
> ...and this is about headers that target exactly one compiler and are known
> to be locally installed.
> 
> Hope this helps,
> Mathias

It kinda helps, although it doesn't say why they chose that. I'm here to learn why we're not using it, not to try to convince everyone that we should be using it. The reasons I've seen so far (build system stuff, etc.) are outside my experience, so I guess I'm just gonna have to be content with "just don't do it". :)
 
> Am 24.01.2018 um 13:19 schrieb Mitch Curtis:
> >
> >
> >> -----Original Message-----
> >> From: Ville Voutilainen [mailto:ville.voutilainen at gmail.com]
> >> Sent: Wednesday, 24 January 2018 1:11 PM
> >> To: Mitch Curtis <mitch.curtis at qt.io>
> >> Cc: Alexander Nassian <nassian at bitshift-dynamics.com>;
> >> development at qt- project.org
> >> Subject: Re: [Development] #pragma once
> >>
> >> On 24 January 2018 at 12:34, Mitch Curtis <mitch.curtis at qt.io> wrote:
> >>>
> >>>
> >>>> -----Original Message-----
> >>>> From: Ville Voutilainen [mailto:ville.voutilainen at gmail.com]
> >>>> Sent: Wednesday, 24 January 2018 11:25 AM
> >>>> To: Alexander Nassian <nassian at bitshift-dynamics.com>
> >>>> Cc: Mitch Curtis <mitch.curtis at qt.io>; development at qt-project.org
> >>>> Subject: Re: [Development] #pragma once
> >>>>
> >>>> On 24 January 2018 at 12:22, Alexander Nassian <nassian at bitshift-
> >>>> dynamics.com> wrote:
> >>>>> Maybe because it’s not part of the C++ standard?
> >>>>
> >>>> #pragma once is not a replacement for include guards.
> >>>
> >>> Why not?
> >>>
> >>>> It's not part of the C++ standard because it doesn't always work
> >>>
> >>> In which ways? My quick search gave me these:
> >>>
> >>> https://stackoverflow.com/a/1946730/904422
> >>> https://en.wikipedia.org/wiki/Pragma_once#Caveats
> >>
> >> That wikipedia link seems to describe the problems fairly accurately.
> >
> > Do we have that issue in Qt?
> >
> >>>> and modules are a superior solution anyway.
> >>> How so?
> >>
> >> Because you can import the same module multiple times without
> >> concerns about re-definitions, and that import is much faster than
> >> parsing a header file.
> > _______________________________________________
> > Development mailing list
> > Development at qt-project.org
> > http://lists.qt-project.org/mailman/listinfo/development
> >
> _______________________________________________
> Development mailing list
> Development at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/development


More information about the Development mailing list