小编典典

#pragma once 与包括警卫?

all

我正在开发一个已知只能在 Windows 上运行并在 Visual Studio 下编译的代码库(它与 excel
紧密集成,所以它不会去任何地方)。我想知道我是否应该使用传统的包含防护或#pragma once用于我们的代码。我认为让编译器处理#pragma once会产生更快的编译,并且在复制和粘贴时更不容易出错。它也稍微不那么难看 ;)

注意:为了获得更快的编译时间,我们可以使用Redundant Include
Guards
但这增加了包含文件和包含文件之间的紧密耦合。通常没关系,因为防护应该基于文件名,并且只有在您需要更改包含名称时才会更改。


阅读 105

收藏
2022-03-21

共1个答案

小编典典

我认为它不会对编译时间产生重大影响,但#pragma once在编译器中得到很好的支持,但实际上并不是标准的一部分。预处理器可能会更快一点,因为它更容易理解您的确切意图。

#pragma once更不容易出错,而且输入的代码也更少。

为了加快编译时间,只需转发声明而不是尽可能包含在 .h 文件中。

我更喜欢使用#pragma once.

请参阅此wikipedia 文章,了解同时使用这两种方法的可能性

2022-03-21