Basistypen

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

Basistyp Beschreibung
booleschen Ein Datenelement, das den Wert TRUE oder FALSE-aufweisen kann.
Byte- Ein 8-Bit-Datenelement wird garantiert ohne Änderung übertragen.
Zeichen- Ein 8-Bit-Nichtsigniertes Zeichendatenelement.
doppelten Eine 64-Bit-Gleitkommazahl.
float- Eine 32-Bit-Gleitkommazahl.
handle_t Ein primitives Handle, das zum Serialisieren von RPC-Bindung oder -Daten verwendet werden kann.
Hyper- Eine 64-Bit-Ganzzahl, die entweder als signierte oder nicht signierten deklariert werden kann, kann auch als _int64bezeichnet werden.
int Eine 32-Bit-Ganzzahl, die entweder als signierten oder nicht signiertendeklariert werden kann.
__int3264 Ein Schlüsselwort, das einen integralen Typ angibt, der entweder 32-Bit- oder 64-Bit-Eigenschaften aufweist.
lange Ein Modifizierer für int, der eine 32-Bit-Ganzzahl angibt. Kann entweder als signierte oder nicht signiertendeklariert werden.
kurze Eine 16-Bit-Ganzzahl, die entweder als signierten oder als nicht signiertedeklariert werden kann.
kleine Ein Modifizierer für int, der eine 8-Bit-Ganzzahl angibt. Kann entweder als signierte oder nicht signiertendeklariert werden.
wchar_t Breitzeichentyp, der als Microsoft-Erweiterung für IDL unterstützt wird. Daher ist dieser Typ nicht verfügbar, wenn Sie die /osf Switch kompilieren.

 

Die Headerdatei Rpcndr.h stellt Definitionen für die meisten dieser Basisdatentypen bereit. Das Schlüsselwort int wird erkannt und kann auf 32-Bit-Plattformen übertragen werden. Auf 16-Bit-Plattformen erfordert die int Datentyp einen Modifizierer, z. B. kurzen oder langen, um die 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 typen verweisen, die aus Basistypen erstellt wurden. (Es gibt eine Ausnahme: Kontexthandles werden als void Typen definiert. Weitere Informationen finden Sie unter Kontexthandles.)