2

我们确实有一个项目,它使用 MIDL 工具来创建特定的头文件/iid 和代理文件。这些文件使用调用 nmake 的构建后步骤编译并与项目的其余部分链接。

是否可以将预编译的头文件与 IDL 生成的文件一起使用?如何注入#include "stdafx-h"和删除其他包含的标头?

4

2 回答 2

1

使用/FI 选项(强制包含):“此选项与在 CL 环境变量中在命令行中指定的每个源文件的第一行的 #include 指令中指定带双引号的文件的效果相同,或在命令文件中。”

它不会删除其他头文件,但这不是使用预编译头文件所必需的……您要预编译的所有头文件都应包含在 stdafx.h 中。然后,如果文件具有包含保护,那么当它们再次包含在源中时不会有问题。

例子

生成的a.cpp文件:

#include <a.h>
#include <b.h>
//rest of the code

假设您要预编译a.hb.h. 然后创建文件 stdafx.h:

#include <a.h>
#include <b.h>

然后使用 /FI 选项将此 stdafx.h 作为第一个文件包含到a.cpp. 如果文件a.hb.h包含警卫,将它们留在a.cpp里面不是问题......

于 2009-10-20T08:54:29.633 回答
0

“stdafx.h”只是一个约定。如果你知道你生成的源文件总是有一个包含头文件的标准前缀,你可以在/Yu开关中命名它们中的最后一个(使用预编译头文件)。要创建 PCH,请创建一个仅包含这些固定标头的单个 .cpp 文件,并使用 .cpp 进行编译/Yc

于 2009-10-20T09:04:08.953 回答