Basistypen
Um probleme zu vermeiden, die implementierungsabhängige Datentypen in verschiedenen Computerarchitekturen verursachen können, definiert MIDL eigene Basisdatentypen.
| Basistyp | BESCHREIBUNG |
|---|---|
| boolean | Ein Datenelement, das den Wert TRUE oder FALSE haben kann. |
| Byte | Ein 8-Bit-Datenelement, das garantiert ohne Änderungen ü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 mit Vorzeichen oder ohne Vorzeichen deklariert werden kann, kann auch als _ int64 bezeichnet werden. |
| int | Eine 32-Bit-Ganzzahl, die als mit oder ohne Vorzeichen deklariert werden kann. |
| __int3264 | Ein Schlüsselwort, das einen integralen Typ angibt, der entweder über 32-Bit- oder 64-Bit-Eigenschaften verfügt. |
| long | Ein Modifizierer für int, der eine 32-Bit-Ganzzahl angibt. Kann als mit oder ohne Vorzeichen deklariert werden. |
| short | Eine 16-Bit-Ganzzahl, die als mit oder ohne Vorzeichen deklariert werden kann. |
| klein | Ein Modifizierer für int, der eine 8-Bit-Ganzzahl angibt. Kann als mit oder ohne Vorzeichen 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-Switch kompilieren. |
Die Headerdatei Rpcndr.h enthält Definitionen für die meisten dieser Basisdatentypen. Das Schlüsselwort int wird erkannt und kann auf 32-Bit-Plattformen übertragen werden. Auf 16-Bit-Plattformen erfordert der int-Datentyp 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 seine 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.)