导入系统头文件

虽然通常可以使用 #include 指令在 IDL 文件中包括头文件,但不建议这样做。 MIDL 编译器将为要编译的 IDL 文件中定义的所有函数生成存根。 通常,头文件包含许多既不需要也不想包含在存根文件中的原型,#include有效地将所有定义放入main IDL 文件中。 此外,如果头文件中定义了不可恢复的类型,则 IDL 文件可能无法编译。

可通过两种方法在 IDL 文件中包括标头文件中的类型定义:

  • 使用 import 指令包括头文件中定义的数据类型。 与 C 语言 #include 指令不同, import 指令仅选取类型和常量定义,并忽略过程原型。 只要main IDL 文件未引用头文件中定义的任何不可更新类型,此方法就会起作用。
  • 使用包含头文件的虚拟接口创建帮助程序 IDL 文件。 然后,使用 import 指令包含帮助程序文件。 这样,编译的存根中只会显示 typedefs。 例如:
//in helper.idl:
interface dummy
{ 
   #include "kitchensink.h"
   #include "system.h"
}

//in main.idl:
import "helper.idl";