Typdefinitionen, Konstruktdeklarationen und Importe

Typdefinitionen, Konstruktdeklarationen und Importe können außerhalb des Schnittstellentexts erfolgen. Alle Definitionen aus der IDL-Hauptdatei werden in der generierten Headerdatei angezeigt, und alle Prozeduren von allen Schnittstellen in der IDL-Hauptdatei generieren Stubroutinen. Dadurch können Anwendungen, die mehrere Schnittstellen unterstützen, IDL-Dateien in einer einzelnen, kombinierten IDL-Datei zusammenführen.

Daher ist weniger Zeit zum Kompilieren der Dateien erforderlich, und MIDL kann redundanzen in den generierten Stubs reduzieren. Dies kann Objektschnittstellen erheblich verbessern, indem sie gemeinsamen Code für Basisschnittstellen und abgeleitete Schnittstellen freigeben können. Bei Nicht-Objektschnittstellen müssen die Prozedurnamen für alle Schnittstellen eindeutig sein. Bei Objektschnittstellen müssen die Prozedurnamen nur innerhalb einer Schnittstelle eindeutig sein. Beachten Sie, dass mehrere Schnittstellen nicht zulässig sind, wenn Sie den Schalter /osf verwenden.

Deklarative Konstrukte

Die Syntax für deklarative Konstrukte in der IDL-Datei ähnelt der syntax für C. MIDL unterstützt alle deklarativen Microsoft C/C++-Konstrukte mit Ausnahme der folgenden:

  • Ältere Deklaratoren im Stil, mit denen ein Deklarator ohne Typspezifizierer angegeben werden kann, z. B.:

    x (y) 
    short x (y)
    
  • Deklarationen mit Initialisierern (MIDL akzeptiert nur Deklarationen, die der MIDL const-Syntax entsprechen).

Das Importschlüsselwort gibt die Namen einer oder mehrerer zu importierenden IDL-Dateien an. Die Importdirektive ähnelt der C include-Direktive, mit der Ausnahme, dass nur Datentypen in die importierende IDL-Datei aufgenommen werden.

Konstantendeklaration

Die Konstantendeklaration gibt boolesche, integer-, character-, wide-character-, string- und ** void _-Konstanten an. Weitere Informationen finden Sie unter _ const *.

Allgemeine Deklaration

Eine allgemeine Deklaration ähnelt der C-Typedef-Anweisung mit dem Hinzufügen von IDL-Typattributen. Mit Ausnahme des Modus /osf lässt der MIDL-Compiler auch eine implizite Deklaration in Form einer Variablendefinition zu.

Funktionsdeklaration

Der Funktionsdeklarator ist ein Sonderfall der allgemeinen Deklaration. Sie können IDL-Attribute verwenden, um das Verhalten des Funktionsrückgabetyps und der einzelnen Parameter anzugeben.

Beispiele

[ 
    uuid(12345678-1234-1234-1234-123456789ABC), 
    version(3.1), 
    pointer_default(unique) 
] 
interface IdlGrammarExample 
{ 
    import "windows.idl", "other.idl"; 
    const wchar_t * NAME = L"Example Program"; 
    typedef char * PCHAR; 
 
    HRESULT DictCheckSpelling( 
        [in, string] PCHAR   word,     // word to look up 
        [out]        short * isPresent // 0 if not present 
    ); 
}