我正在研究一个已知只能在Windows上运行并在Visual Studio下编译的代码库(它与excel紧密集成,所以它不会去任何地方).我想知道我是否应该使用传统的包含警卫或#pragma once用于我们的代码.我认为让编译器处理#pragma once会产生更快的编译,并且在复制和粘贴时不易出错.它也稍微不那么难看;)
注意:为了获得更快的编译时间,我们可以使用Redundant Include Guards,但这会在包含的文件和包含文件之间增加紧密耦合.通常它没关系,因为防护应该基于文件名,并且只有在你需要改变包含名称时才会改变.
在现有代码中,我看到#pragma曾经在#include之后使用过
//Some_Header.h
#include "header1.h"
#include "header2.h"
#pragma once
//implementations
Run Code Online (Sandbox Code Playgroud)
代替
//Some_Header.h
#pragma once
#include "header1.h"
#include "header2.h"
//implementations
Run Code Online (Sandbox Code Playgroud)
我认为它总是需要像第二个例子一样,你的#pragma曾经被定义的位置或者预处理器在文件中的任何地方拾取它是否重要?
编辑
我知道#pragma曾经不是标准的一部分,包括警卫,但这不是我的问题.