我正在开发一个已知只能在 Windows 上运行并在 Visual Studio 下编译的代码库(它与 excel 紧密集成,因此它不会去任何地方)。我想知道我是否应该使用传统的包含防护或使用 #pragma once
作为我们的代码。我认为让编译器处理 #pragma once
会产生更快的编译,并且在复制和粘贴时更不容易出错。它也稍微不那么难看 ;)
注意:为了获得更快的编译时间,我们可以使用 Redundant Include Guards ,但这会增加包含文件和包含文件之间的紧密耦合。通常没关系,因为防护应该基于文件名,并且只有在您需要更改包含名称时才会更改。
原文由 Matt Price 发布,翻译遵循 CC BY-SA 4.0 许可协议
我认为它不会对编译时间产生显着影响,但是
#pragma once
在编译器中得到了很好的支持,但实际上并不是标准的一部分。预处理器可能会更快一点,因为它更容易理解您的确切意图。#pragma once
不太容易出错,并且输入的代码更少。为了加快编译时间,只需转发声明而不是尽可能包含在 .h 文件中。
我更喜欢使用
#pragma once
。请参阅此 wikipedia 文章,了解同时使用这两种方法的可能性。