5

如果我将一个标头 (ah) 放入 stdafx.h 并且该标头包含另一个在 stdafx.h 中未提及的标头 (bh),那么每次有人包含 ah 时都会访问 bh 还是将其编译为 ah 的一部分?如果编译成ah,直接包含bh会怎样?这会被预编译吗?

我提出这个问题的动机是我正在尝试为我正在使用的软件优化 stdafx.h 文件的内容。重建和增量构建时间对我们都很重要。我想知道是否可以简单地在所有 .cpp 文件中搜索#include 指令并计算每个文件被包含的次数。经常包含的文件可能是 stdafx.h 文件的良好候选者。当然,如果我不仅要考虑包含哪些文件,还要考虑包含的文件包含哪些文件,那么这种策略完全是假的。

我怀疑这很重要,但我们使用的是 Visual Studio 2005。

4

1 回答 1

4

ah 和 bh 将成为预编译头文件的一部分,以后不需要包含它们。您只需要在需要 ah 或 bh 的地方包含 stdafx.h。如果您在 stdafx.h 之后显式包含 ah 或 bh (stdafx.h 包含之前的所有代码都被忽略),那么它不会被第二次编译(只是因为它们通常受#pragma once指令或定义保护),但编译器会如果您询问它,请在硬盘上打开该文件,

顺便说一句,您应该知道,您可以使用多个预编译的头文件(但每个 cpp 文件中不超过一个)。

于 2009-08-24T20:28:04.810 回答