システム ヘッダー ファイルのインポート
多くの場合、#include ディレクティブを使用して IDL ファイルにヘッダー ファイルを含めることができますが、推奨されません。 MIDL コンパイラは、コンパイルされる IDL ファイルで定義されているすべての関数のスタブを生成します。 通常、ヘッダー ファイルには、スタブ ファイルに含める必要も含める必要もないプロトタイプが多数含まれており、#include は、これらの定義をすべてメイン IDL ファイルに効果的に配置します。 さらに、ヘッダー ファイルで定義されている値が削除できない型がある場合、IDL ファイルがコンパイルされない可能性があります。
IDL ファイルにヘッダー ファイルの型定義を含めるには、次の 2 つの方法があります。
- import ディレクティブを使用して、ヘッダー ファイルに定義されているデータ型を含めます。 C 言語の #include ディレクティブとは異なり、import ディレクティブは型と定数の定義のみを取得し、プロシージャのプロトタイプを無視します。 この方法は、メイン IDL ファイルが、ヘッダー ファイルで定義されている削除できない型を参照しない限り機能します。
- ヘッダー ファイルを含むダミー インターフェイスを持つヘルパー IDL ファイルを作成します。 次に、import ディレクティブを使用してヘルパー ファイルを含めます。 この方法では、typedefのみがコンパイル済みスタブに表示されます。 例えば:
//in helper.idl:
interface dummy
{
#include "kitchensink.h"
#include "system.h"
}
//in main.idl:
import "helper.idl";