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

Hunger Tobias Tobias.Hunger at theqtcompany.com
Wed Jan 13 13:54:22 CET 2016


On Mi, 2016-01-13 at 12:15 +0000, Bubke Marco wrote:
> We support it but it will be slow. It is your decision. Anyway how often do
> you need code completion in the header file. 

I agree with Christian that we should not change the coding standard to work
around problems in the code model.

> Maybe we can fix it in the future but it depends on Clang.

Good.

> Anyway I don't want to force you to anything. It was about the future. So
> #pragma once would be allowed for the people who want to use it.

No. A coding standard is supposed to help developers work with code in their
project that they are not familiar with by writing down a basic set of rules
that provide a base-line of consistency. This is only possible when everybody
follows the same set of rules. That is why we need a broad consensus on coding
style rules, with "do whatever you want" being an option only for rules that the
community is split on.

I do not think #pragma once is such an item:

 * According to Marco #pragma once is supported by all compilers we support with
Qt Creator.

 * It is less to type

 * It removes the need to come up with a long name that is unique in the project

 * It prevents unexpected results when that name is not as unique as you thought

 * It prevents unexpected results when you mistype that long name once in the
#define or #ifndef lines.

So I am in favor changing the coding style to ask developers to use #pragma once
in all new headers.

I think it will most likely even make sense to update existing headers in one
patch and be done with this change.

Best Regards,
Tobias

-- 
Tobias Hunger, Senior Software Engineer | The Qt Company
The Qt Company GmbH, Rudower Chaussee 13, D-12489 Berlin
Geschäftsführer: Mika Pälsi, Juha Varelius, Tuula Haataja Sitz der Gesellschaft:
Berlin, Registergericht: Amtsgericht Charlottenburg, HRB 144331 B


More information about the Qt-creator mailing list