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

是否可以将预编译头与MIDL生成的文件一起使用?

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

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

    是否可以将预编译头与IDL生成的文件一起使用?我怎么注射 #include "stdafx-h" 并删除其他包含的标题?

    2 回复  |  直到 15 年前
        1
  •  1
  •   Xavier Nodet    15 年前

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

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

    例子

    生成 a.cpp 文件:

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

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

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

    然后使用/fi选项将此stdafx.h作为第一个文件包含到 A.CPP .如果文件 A. B.H include guards 把它们留在 A.CPP 不是问题…

        2
  •  0
  •   MSalters    15 年前

    “stdafx.h”只是一个惯例。如果您知道您生成的源文件总是具有包含头的标准前缀,则可以在 /Yu 开关(使用预编译头)。要创建PCH,只使用这些固定头创建一个.cpp文件,并使用 /Yc .

    推荐文章