【问题标题】:Having both self-sufficient headers and precompiled headers同时拥有自给自足的头文件和预编译的头文件
【发布时间】:2014-05-10 13:26:53
【问题描述】:

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

 #include <boost\shared_ptr.hpp>

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

【问题讨论】:

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

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    此外,每个标头都应该有保护措施,以防止使用经典的便携式设备进行冗余处理

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

    或微软特定的

    #pragma once
    

    当标头包含其他可能包含已包含标头的标头时设置保护,将防止多次包含错误,并加快预处理时间。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2012-07-09
      • 1970-01-01
      • 2023-03-19
      • 2010-11-20
      • 2015-01-03
      • 2012-09-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多