Die neuen Datentypen
Für 64-Bit-Windows wurden drei Klassen von Datentypen eingeführt: Datentypen mit fester Genauigkeit, Zeigergenauigkeitstypen und Typen mit spezifischer Zeigergenauigkeit. Diese Typen wurden der Entwicklungsumgebung hinzugefügt, damit Entwickler sich auf 64-Bit-Windows vorbereiten können. Diese Typen werden von den grundlegenden Integer- und Long-Typen der C-Sprache abgeleitet. Daher können Sie diese Datentypen in Code verwenden, den Sie mit 32-Bit-Windows kompilieren und testen, und dann mit dem 64-Bit-Compiler neu kompilieren, wenn Sie auf 64-Bit-Windows abzielen.
Selbst für Anwendungen, die nur auf 32-Bit-Windows ausgerichtet sind, macht die Übernahme dieser neuen Datentypen Ihren Code stabiler. Um diese Datentypen zu verwenden, müssen Sie Ihren Code auf potenziell unsichere Zeigerverwendung, Polymorphie und Datendefinitionen überprüfen. Wenn eine Variable beispielsweise vom Typ ULONG _ PTR ist, ist klar, dass sie zum Umwandeln von Zeigern für arithmetische Operationen oder Polymorphie verwendet wird. Es ist nicht möglich, eine solche Verwendung direkt mit den älteren Datentypen anzugeben. (Sie können dies indirekt tun, indem Sie die Benennung abgeleiteter Typen oder die notarische Notation verwenden, aber beide Techniken sind fehleranfällig.)
Alle diese Datentypen werden in BaseTsd.h deklariert. Weitere Informationen, einschließlich Definitionen dieser Datentypen, finden Sie unter Windows Datentypen.
Feste Genauigkeit
Datentypen mit fester Genauigkeit haben die gleiche Länge in 32- und 64-Bit-Windows. Damit Sie sich dies merken können, ist ihre Genauigkeit Teil des Namens des Datentyps. Im Folgenden werden die Datentypen mit fester Genauigkeit angezeigt.
| Begriff | BESCHREIBUNG |
|---|---|
| DWORD32 |
32-Bit-Ganzzahl ohne Vorzeichen |
| DWORD64 |
64-Bit-Ganzzahl ohne Vorzeichen |
| INT32 |
32-Bit-Ganzzahl mit Vorzeichen |
| INT64 |
64-Bit-Ganzzahl mit Vorzeichen |
| LONG32 |
32-Bit-Ganzzahl mit Vorzeichen |
| LONG64 |
64-Bit-Ganzzahl mit Vorzeichen |
| UINT32 |
Int32 ohne Vorzeichen |
| UINT64 |
Int64 ohne Vorzeichen |
| ULONG32 |
Unsigned LONG32 |
| ULONG64 |
Unsigned LONG64 |
Zeigergenauigkeit
Wenn sich die Zeigergenauigkeit ändert (d. h. wenn sie 32 Bits auf 32-Bit-Windows und 64 Bits mit 64-Bit-Windows wird), spiegeln die Zeigergenauigkeits-Datentypen die Genauigkeit entsprechend wider. Daher ist es sicher, einen Zeiger auf einen dieser Typen zu casten, wenn Zeigerarithmetik ausgeführt wird. Wenn die Zeigergenauigkeit 64 Bits beträgt, beträgt der Typ 64 Bits. Die Anzahltypen spiegeln auch die maximale Größe wider, auf die ein Zeiger verweisen kann. Im Folgenden werden die Zeigergenauigkeit und die Anzahltypen angezeigt.
| Begriff | BESCHREIBUNG |
|---|---|
| DWORD _ PTR |
Längentyp ohne Vorzeichen für Zeigergenauigkeit. |
| HALF _ PTR |
Die Hälfte der Größe eines Zeigers. Verwenden Sie in einer -Struktur, die einen Zeiger und zwei kleine Felder enthält. |
| INT _ PTR |
Ganzzahltyp mit Vorzeichen für Zeigergenauigkeit. |
| LONG _ PTR |
Long-Typ mit Vorzeichen für Zeigergenauigkeit. |
| SIZE _ T |
Die maximale Anzahl von Bytes, auf die ein Zeiger verweisen kann. Verwenden Sie für eine Anzahl, die den gesamten Bereich eines Zeigers umfassen muss. |
| SSIZE _ T |
Size _ T mit Vorzeichen . |
| UHALF _ PTR |
Unsigned HALF _ PTR. |
| UINT _ PTR |
Unsigned INT _ PTR. |
| ULONG _ PTR |
Unsigned LONG _ PTR. |
Bestimmte Pointer-Precision Typen
Die folgenden neuen Zeigertypen geben die Größe des Zeigers explizit an. Seien Sie vorsichtig, wenn Sie Zeiger in 64-Bit-Code verwenden: Wenn Sie den Zeiger mit einem 32-Bit-Typ deklarieren, erstellt das Betriebssystem den Zeiger, indem es einen 64-Bit-Zeiger abschneidet. (Alle Zeiger sind 64 Bits auf 64-Bit-Windows.)
| Begriff | BESCHREIBUNG |
|---|---|
| ZEIGER _ 32 |
Ein 32-Bit-Zeiger. Bei 32-Bit-Windows ist dies ein nativer Zeiger. Bei 64-Bit-Windows ist dies ein abgeschnittener 64-Bit-Zeiger. |
| ZEIGER _ 64 |
Ein 64-Bit-Zeiger. Bei 64-Bit-Windows ist dies ein nativer Zeiger. Bei 32-Bit-Windows ist dies ein 32-Bit-Zeiger mit Vorzeichenerweiterung. Beachten Sie, dass es nicht sicher ist, den Zustand des hohen Zeigerbits anzunehmen. |