Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 具有自足标头和预编译标头_C++_Visual Studio 2010_Build_Precompiled Headers - Fatal编程技术网

C++ 具有自足标头和预编译标头

C++ 具有自足标头和预编译标头,c++,visual-studio-2010,build,precompiled-headers,C++,Visual Studio 2010,Build,Precompiled Headers,我有一个头文件,其中包含几个外部头文件,如 #include <boost\shared_ptr.hpp> #包括 我希望保持头的自给自足,并在预编译头中添加外部include指令(我使用的是经典的stdafx.hsetup),以加快编译速度。冗余包含指令是否已删除或至少处理得更快?在这种情况下,使用预编译头不会加快冗余包含的处理速度。如果冗余的include文件包含头保护(或#pragma once),它们的处理速度会快得多。如果要避免在每个cpp文件中添加#include,

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

 #include <boost\shared_ptr.hpp>
#包括

我希望保持头的自给自足,并在预编译头中添加外部include指令(我使用的是经典的
stdafx.h
setup),以加快编译速度。冗余包含指令是否已删除或至少处理得更快?在这种情况下,使用预编译头不会加快冗余包含的处理速度。如果冗余的include文件包含头保护(或#pragma once),它们的处理速度会快得多。

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

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

此外,每个标头都应该有防护装置,以防止使用经典的便携式处理器进行冗余处理

#ifndef _MyHeader_H_
#define _MyHeader_H_
... header code here
#endif
或者是微软特有的

#pragma once
当标头包含其他标头(这些标头又可能包含已包含的标头)时,使用防护将防止多个包含错误,并加快预处理时间


希望这能有所帮助。

这真的没关系,它是预编译的。@HansPassant确实很愚蠢。咖啡前的问题。