代码之家  ›  专栏  ›  技术社区  ›  rlbond

MSVC预编译头:哪些文件需要包含“stdafx.h”?

  •  2
  • rlbond  · 技术社区  · 15 年前

    每个文件都需要 #include "stdafx.h" 使用预编译头时?或者只需要包含源文件。

    编辑:另外,我的预编译头文件 #includes 很多STL头。但是,在我的头中,有时我有返回的函数 std::vector 或者类似的事情,所以我需要 #include <vector> 不管怎样。这比包括stdafx.h更糟吗?我需要包括我的单元测试框架的定义。

    4 回复  |  直到 15 年前
        1
  •  4
  •   bdonlan    15 年前

    每个源文件都需要在任何非注释行之前包含它。头文件不需要包含它,因为每个源文件都将在任何其他头文件之前包含它。

        2
  •  0
  •   Kei    15 年前

    可以设置是否要在项目级别或文件级别使用预编译头文件。对于项目设置,请转到Projject属性对话框,然后单击“配置属性/C/C++ +预编译头”。有一个用于创建/使用预编译头的选项。通过在“文件属性”对话框中设置相同的选项,可以覆盖每个.cpp文件上的项目级设置。

        3
  •  0
  •   Simeon Pilgrim    15 年前

    所有的C/C++文件都需要在顶部有预编译的标题——如果是为该项目设置的。但是,你可以让它关闭C/ON/C/C++文件(惠以说)。

    如果要包括标准头,请将它们全部放入预编译头中。然后在普通头文件(.h)中需要它们。只要所有项目和文件都使用预编译头文件。

        4
  •  0
  •   Bojan Resnik    15 年前

    正如其他人所说,只有源文件需要包含预编译头文件。我只想补充一点,在我看来,代码应该使用或不使用预编译头正确编译。为了实现这一点,头文件应该是自包含的,而不是依赖于源文件,包括其他必需的头文件。我认为预编译头只是一种加速编译的方法,而不是作为项目中所有已使用头的存储库。