Importazione di file di intestazione di sistema
Anche se spesso è possibile usare la direttiva #include per includere i file di intestazione nel file IDL, non è consigliabile. Il compilatore MIDL genererà stub per tutte le funzioni definite nel file IDL da compilare. In genere un file di intestazione contiene un certo numero di prototipi che non è necessario né includere nei file stub e un #include inserisce in modo efficace tutte queste definizioni nel file IDL principale. Inoltre, se nel file di intestazione sono definiti tipi non rimovibili, il file IDL potrebbe non essere compilato.
Esistono due modi per includere le definizioni dei tipi dai file di intestazione in un file IDL:
- Utilizzare la direttiva import per includere i tipi di dati definiti in un file di intestazione. A differenza della direttiva #include del linguaggio C, la direttiva import seleziona solo le definizioni di tipo e costante e ignora i prototipi di routine. Questo approccio funzionerà finché il file IDL principale non fa riferimento ad alcun tipo nonremotable definito nel file di intestazione.
- Creare un file IDL helper con un'interfaccia fittizia che include i file di intestazione. Usare quindi la direttiva import per includere il file helper. In questo modo, solo il typedefs verrà visualizzato negli stub compilati. Ad esempio:
//in helper.idl:
interface dummy
{
#include "kitchensink.h"
#include "system.h"
}
//in main.idl:
import "helper.idl";