匯入系統標頭檔

雖然通常可以使用 #include 指示詞在 IDL 檔案中包含標頭檔,但不建議這麼做。 MIDL 編譯器會針對要編譯之 IDL 檔案中定義的所有函式產生存根。 標頭檔通常包含一些原型,您不需要也不想要包含在存根檔案中, 而且#include 有效地將所有定義放入主要 IDL 檔案中。 此外,如果標頭檔中定義了非可變類型,IDL 檔案可能無法編譯。

在 IDL 檔案中包含標頭檔的類型定義有兩種方式:

  • 使用 import 指示詞來包含標頭檔中定義的資料類型。 不同于 C 語言 #include 指示詞, import 指示詞只會挑選類型和常數定義,並忽略程式原型。 只要您的主要 IDL 檔案未參考標頭檔中定義的任何非可變類型,這個方法就能運作。
  • 建立包含標頭檔之虛擬介面的協助程式 IDL 檔案。 然後,使用 import 指示詞來包含協助程式檔案。 如此一來,只有 typedefs 會出現在編譯的存根中。 例如:
//in helper.idl:
interface dummy
{ 
   #include "kitchensink.h"
   #include "system.h"
}

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