c++ - 可以将预编译 header 与 MIDL 生成的文件一起使用吗?

标签 c++ visual-studio idl precompiled-headers

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

IDL 生成的文件可以使用预编译头文件吗?如何注入(inject) #include "stdafx-h" 并删除其他包含的 header ?

最佳答案

使用 /FI option (Force Include): "此选项与在命令行、CL 环境变量或命令文件中指定的每个源文件的第一行的#include 指令中用双引号指定文件具有相同的效果”

它不会删除其他 header ,但这对于要使用的预编译 header 不是必需的...您要预编译的所有 header 都应包含在 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.hinclude guards , 将它们留在 a.cpp 中不是问题...

关于c++ - 可以将预编译 header 与 MIDL 生成的文件一起使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1593231/

相关文章:

c++ - SonarQube 显示问题但 0 天技术债务

c++ - thread.join 期间出现段错误

c# - Visual Studio 免费插件或 resharper 插件,用于在工具提示中显示常量值

com - 为什么我们必须为 idl 中的每个接口(interface)创建唯一的 uuid?

vim - CORBA IDL 的 ctags 生成器?

c# - 在 C++ IDL 中定义结构,然后在 C# 中适本地定义 MarshalAs()

c++ - directx11 点光源问题。从原点平移的对象没有正确点亮

c++ - std::priority_queue 参数化比较结构

visual-studio - F#双击文件在VS中创建一个副本

c# - 在 SSIS 中使用脚本任务设置变量值