拥有自给自足的标头和预编译的标头

时间:2014-03-31 09:09:00

标签: c++ visual-studio-2010 build precompiled-headers

我有一个头文件,其中包含几个外部标题,如

 #include <boost\shared_ptr.hpp>

我想保持标头自给自足,并在预编译头中添加外部include指令(我使用经典的stdafx.h设置)以提高编译速度。在这种情况下,冗余包含指令是否被删除或至少处理得更快?

2 个答案:

答案 0 :(得分:0)

使用预编译头不会加快冗余包含的处理速度。如果冗余包含文件包含标题保护(或#pragma一次),它们将被更快地处理。

答案 1 :(得分:0)

如果您想避免在每个cpp文件中添加#include,则可以从项目属性中使用:Configuration Properties - &gt; C / C ++ - &gt;高级 - &gt;强制包含文件选项。这将自动在项目的每个cpp文件中添加指定的包含。

但是,如果你仍然有一个或多个包含大标题的cpp文件,或者甚至一个标题本身有一长串包含其他大标题的标题,那么包含它的cpp文件将无论你使用还是编译都会很慢是否预编译了头文件。一个解决方案是将这个/这些长标题添加到stdafx.h

此外,每个标题都应该有防护,以防止使用经典便携式

进行冗余处理
#ifndef _MyHeader_H_
#define _MyHeader_H_
... header code here
#endif

或特定于Microsoft的

#pragma once

如果标题包含其他标题,而​​这些标题又可能包含已包含的标题,则可以防止多个包含错误,并加快预处理时间。

希望这有帮助。

相关问题