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.