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确实很愚蠢。咖啡前的问题。