[Qt-creator] Use #pragma once as default instead of header guards

Mathias Hasselmann mathias at taschenorakel.de
Sun Jan 17 11:12:25 CET 2016

At least GCC implements multi-include optimizations that efficiently 
handle header guards in the pre-processor already. I'd be surprised if 
clang and other compilers are missing that feature.


So I see some chance that the code model simply doesn't making perfect 
use of clang yet.

In the end it has to efficiently handle header guards anyway as we are 
not going to fix all the system and 3rd party headers our applications 
are using.

So unless there is a significant technical reason why the code model 
cannot be fixed to handle header guards efficiently, this thread is a 
typical bike shed discussion.


Am 13.01.2016 um 11:55 schrieb Bubke Marco:
> Hello
> With the clang code model there is a problem to generate a preamble file with header guards. Imaging a preamble file is like a automatically pre compiled header for the include block at the top. But there are limitations. One is that every ifndef has to match is #endif inside of the preamble but this not the case for header guards.
> #ifndef HEADER_GUARD
> #define HEADER_GUARD
> #include <QtGui> // this would be compiled in the preamble once
> void foo()
> {
>     auto bahn = nullptr;
> }
> #endif
> We don't generate a preamble for this case because the opening ifndefs is not matching the endif. In that case the clang model will be very slow!
> So I propose we change our wizards to utilize #pragma once and use it for every new file. We can change header files where we need code completion on demand too.
> https://en.wikipedia.org/wiki/Pragma_once
> Best regards, Marco
> _______________________________________________
> Qt-creator mailing list
> Qt-creator at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/qt-creator

More information about the Qt-creator mailing list