Basistypen

Um die Probleme zu vermeiden, die implementierungsabhängige Datentypen auf verschiedenen Computerarchitekturen verursachen können, definiert MIDL eigene Basisdatentypen.

Basistyp BESCHREIBUNG
Boolean Ein Datenelement, das den Wert TRUE oder FALSE aufweisen kann.
Byte Ein 8-Bit-Datenelement, das garantiert ohne Änderung übertragen wird.
Char Ein 8-Bit-Datenelement ohne Vorzeichen.
Doppel Eine 64-Bit-Gleitkommazahl.
schweben Eine 32-Bit-Gleitkommazahl.
handle_t Ein primitives Handle, das für die RPC-Bindung oder -Datenserialisierung verwendet werden kann.
Hyper Eine 64-Bit-Ganzzahl, die entweder als signiert oder unsigniert deklariert werden kann, kann auch als _int64 bezeichnet werden.
INT Eine 32-Bit-Ganzzahl, die entweder als signiert oder unsigned deklariert werden kann.
__int3264 Ein Schlüsselwort (keyword), der einen integralen Typ angibt, der entweder über 32-Bit- oder 64-Bit-Eigenschaften verfügt.
Lange Ein Modifizierer für int , der eine 32-Bit-Ganzzahl angibt. Kann entweder als signiert oder nicht signiert deklariert werden.
kurz Eine 16-Bit-Ganzzahl, die entweder als signiert oder unsigned deklariert werden kann.
klein Ein Modifizierer für int , der eine 8-Bit-Ganzzahl angibt. Kann entweder als signiert oder nicht signiert deklariert werden.
wchar_t Breitzeichentyp, der als Microsoft-Erweiterung für IDL unterstützt wird. Daher ist dieser Typ nicht verfügbar, wenn Sie mit dem /osf-Schalter kompilieren.

 

Die Headerdatei Rpcndr.h enthält Definitionen für die meisten dieser Basisdatentypen. Die Schlüsselwort (keyword) int wird erkannt und kann auf 32-Bit-Plattformen übertragen werden. Auf 16-Bit-Plattformen erfordert der Datentyp int einen Modifizierer, z. B. short oder long, um seine Länge anzugeben.

Obwohl void * * vom ANSI C-Standard als generischer Zeigertyp erkannt wird, schränkt MIDL die Verwendung ein. Jeder Zeiger, der in einem Remote- oder Serialisierungsvorgang verwendet wird, muss entweder auf Basistypen oder auf Typen verweisen, die aus Basistypen erstellt wurden. (Es gibt eine Ausnahme: Kontexthandles werden als void-Typen definiert. Weitere Informationen finden Sie unter Kontexthandles.)