2014-03-31 44 views
1

我有一个头文件,其中包括本身的几个外部头像只要拥有自给自足的头和预编译头

#include <boost\shared_ptr.hpp> 

我想保持头部自给自足,还可以添加外部包括在指令预编译头文件(我正在使用经典的stdafx.h设置)来加快编译速度。在这种情况下是否删除了冗余包含指令或至少处理了更快的指令?

+1

真的没关系,它是预编译的。 –

+0

@HansPassant确实是愚蠢的。咖啡前问题。 – UmNyobe

回答

0

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

0

如果要避免在每个cpp文件中添加#include,则可以使用项目属性:配置属性 - > C/C++ - >高级 - >强制包含文件选项。这会自动将指定的包含添加到项目中的每个cpp文件中。

但是,如果您仍然有一个或多个包含大标题的cpp文件,或者甚至有一个标题本身具有包含其他大标题的长列表,那么包含该标题的cpp文件无论您使用预编译头还是不行。一个解决方案,就是这种/这些长头添加到您的stdafx.h

而且,每头应该有警卫使用经典的便携式

#ifndef _MyHeader_H_ 
#define _MyHeader_H_ 
... header code here 
#endif 

或微软专用的,以防止冗余处理

#pragma once 

当头文件包含其他头文件(这些头文件可能包含已包含的头文件)时具有警卫功能,可防止多重包含错误并加快预处理时间。

希望这会有所帮助。