Megosztás a következőn keresztül:


Az új adattípusok

A 64 bites Windowshoz három adattípust vezettünk be: rögzített pontosságú adattípusokat, mutató pontosságú típusokat és specifikus-mutató pontosságú típusokat. Ezek a típusok hozzáadva lettek a fejlesztői környezethez, hogy a fejlesztők felkészülhessenek a 64 bites Windowsra. Ezek a típusok az alapszintű C-nyelvi egész számból és a hosszú típusokból származnak. Ezért ezeket az adattípusokat használhatja a 32 bites Windowsra lefordított és tesztelt kódban, majd újrafordíthatja a 64 bites fordítóval, amikor a 64 bites Windows a cél.

Még a csak 32 bites Windowst célzó alkalmazások esetében is az új adattípusok bevezetése robusztusabbá teszi a kódot. Ezeknek az adattípusoknak a használatához be kell vizsgálnia a kódban a potenciálisan nem biztonságos mutatóhasználatot, a polimorfizmust és az adatdefiníciókat. Ha például egy változó ULONG_PTRtípusú, egyértelmű, hogy az aritmetikai műveletekhez vagy polimorfizmushoz használt mutatókhoz lesz használva. Az ilyen használatot nem lehet közvetlenül jelezni a régebbi adattípusok használatával. (Ezt közvetett módon is megteheti származtatott típuselnevezéssel vagy magyar jelöléssel, de mindkét módszer hajlamos a hibákra.)

Ezek az adattípusok a BaseTsd.h-ban vannak deklarálva. További információ, beleértve az adattípusok definícióit, lásd Windows-adattípusok.

Rögzített pontosság

A rögzített pontosságú adattípusok a 32 és a 64 bites Windows esetében is azonos hosszúságúak. Annak érdekében, hogy könnyebben megjegyezhesd, pontosságuk az adattípus nevének része. A következők a rögzített pontosságú adattípusok.

Kifejezés Leírás
DWORD32
32 bites aláíratlan egész szám
DWORD64
64 bites aláíratlan egész szám
INT32
32 bites aláírt egész szám
INT64
64 bites aláírt egész szám
LONG32
32 bites aláírt egész szám
LONG64
64 bites aláírt egész szám
UINT32
Aláíratlan INT32
UINT64
Előjel nélküli INT64
ULONG32
Aláíratlan LONG32
ULONG64
Aláíratlan LONG64

Mutató pontossága

Ahogy a mutató pontossága megváltozik (azaz 32 bites Windows rendszeren 32, 64 bites Windows esetén pedig 64 bites lesz), a mutató pontossági adattípusai ennek megfelelően tükrözik a pontosságot. Ezért a mutató aritmetikai végrehajtásakor biztonságosan az ilyen típusúak egyikére mutatót lehet leadni; ha a mutató pontossága 64 bit, akkor a típus 64 bit. A darabszámtípusok azt a maximális méretet is tükrözik, amelyre egy mutató hivatkozhat. Az alábbiakban a mutató precizitása és a számláló típusok szerepelnek.

Kifejezés Leírás
DWORD_PTR
Alá nem írt hosszú típus a mutató pontossága érdekében.
HALF_PTR
A mutató méretének fele. Egy mutatót és két kis mezőt tartalmazó struktúrában használható.
INT_PTR
Aláírt egész számtípus a mutató pontosságához.
LONG_PTR
Aláírt hosszú típus a mutató pontossága érdekében.
SIZE_T
Az a maximális bájtszám, amelyre egy mutató hivatkozhat. Olyan számhoz használható, amely a mutató teljes tartományán át kell terjednie.
SSIZE_T
Aláírt SIZE_T.
UHALF_PTR
Aláíratlan HALF_PTR.
UINT_PTR
Aláíratlan INT_PTR.
ULONG_PTR
Aláíratlan LONG_PTR.

Adott Pointer-Precision-típusok

Az alábbi új mutatótípusok kifejezetten méretezik a mutatót. Óvatosan használja a mutatókat 64 bites kódban: Ha 32 bites típussal deklarálja a mutatót, az operációs rendszer egy 64 bites mutató csonkolásával hozza létre a mutatót. (Minden mutató 64 bites a 64 bites Windowson.)

Kifejezés Leírás
POINTER_32
Egy 32 bites mutató. A 32 bites Windowson ez egy natív mutató. 64 bites Windows rendszeren ez egy 64 bites mutató csonkolt verziója.
POINTER_64
Egy 64 bites mutató. A 64 bites Windowson ez egy natív mutató. 32 bites Windows rendszeren ez egy 32 bites jelre bővített mutató.
Vegye figyelembe, hogy nem biztonságos feltételezni a felső mutatóbit állapotát.