Yeni Veri Türleri
64 bit Windows için üç veri türü sınıfı kullanıma sunulmuştur: sabit duyarlıklı veri türleri, işaretçi duyarlık türleri ve belirli işaretçi duyarlık türleri. Bu türler, geliştiricilerin 64 bit Windows'a hazırlanmalarına olanak sağlamak için geliştirme ortamına eklendi. Bu türler, temel C dili tamsayısından ve uzun türlerden türetilir. Bu nedenle, bu veri türlerini 32 bit Windows üzerinde derleyip test ettiğiniz kodda kullanabilir ve ardından 64 bit Windows'ı hedeflerken 64 bit derleyiciyle yeniden derleyebilirsiniz.
Yalnızca 32 bit Windows'ı hedefleyen uygulamalar için bile bu yeni veri türlerini benimsemek kodunuzu daha sağlam hale getirir. Bu veri türlerini kullanmak için kodunuzu güvenli olmayabilecek işaretçi kullanımı, çok biçimlilik ve veri tanımları için taramanız gerekir. Örneğin, bir değişken ULONG_PTRtüründe olduğunda, aritmetik işlemler veya polimorfizm için işaretçileri atamada kullanılacağı açıktır. Eski veri türlerini kullanarak bu tür bir kullanımı doğrudan belirtmek mümkün değildir. (Bunu dolaylı olarak türetilmiş tür isimlendirme veya Macar notasyonu kullanarak yapabilirsiniz, ancak her iki teknik de hatalara açıktır.)
Bu veri türlerinin tümü BaseTsd.h içinde bildirilir. Bu veri türlerinin tanımları da dahil olmak üzere daha fazla bilgi için bkz. Windows Veri Türleri.
Sabit Kesinlik
Sabit duyarlıklı veri türleri hem 32 hem de 64 bit Windows'ta aynı uzunluktadır. Unutulmaması için, kesinlik, veri türünün isminin bir parçasıdır. Sabit duyarlıklı veri türleri aşağıdadır.
Terim | Açıklama |
---|---|
DWORD32 |
32 bit işaretsiz tamsayı |
DWORD64 |
64 bit işaretsiz tamsayı |
INT32 |
32 bit imzalı tamsayı |
INT64 |
64 bit işaretli tamsayı |
LONG32 |
32 bit imzalı tamsayı |
LONG64 |
64 bit işaretli tamsayı |
UINT32 |
İmzasız INT32 |
UINT64 |
İmzasız INT64 |
ULONG32 |
İmzasız LONG32 |
ULONG64 |
İmzasız LONG64 |
İşaretçi Duyarlığı
İşaretçi hassasiyeti değiştikçe (yani, 32 bit Windows'ta 32 bit ve 64 bit Windows'ta 64 bit olduğunda), işaretçi hassasiyeti veri türleri bu hassasiyeti buna göre yansıtır. Bu nedenle, işaretçi aritmetiği gerçekleştirirken bu türlerden birine bir işaretçi dönüştürmek güvenlidir; işaretçi hassasiyeti 64 bit ise, tür 64 bittir. Sayı türleri, işaretçinin başvurabileceği en büyük boyutu da yansıtır. İşaretçi duyarlılığı ve sayı türleri aşağıda verilmiştir.
Terim | Açıklama |
---|---|
DWORD_PTR |
İşaretçi hassasiyeti için işaretsiz uzun tür. |
HALF_PTR |
İşaretçinin yarısı kadar. bir işaretçi ve iki küçük alan içeren bir yapı içinde kullanın. |
INT_PTR |
İşaretçi doğruluğu için imzalı tamsayı türü. |
LONG_PTR |
İşaretçi duyarlılığı için imzalı uzun tip. |
SIZE_T |
İşaretçinin başvurabileceği azami bayt sayısı. İşaretçinin tüm aralığını kapsaması gereken bir sayıyı belirtmek için kullanın. |
SSIZE_T |
İmzalı SIZE_T. |
UHALF_PTR |
İmzasız HALF_PTR. |
UINT_PTR |
İmzasız INT_PTR. |
ULONG_PTR |
İmzasız LONG_PTR. |
Belirli Pointer-Precision Türleri
Yeni işaretçi türleri, işaretçinin boyutunu açıkça belirler. 64 bit kodda işaretçileri kullanırken dikkatli olun: İşaretçiyi 32 bitlik bir tür kullanarak bildirirseniz, işletim sistemi işaretçiyi 64 bit işaretçiyi keserek oluşturur. (Tüm işaretçiler, 64 bit Windows'ta 64 bittir.)
Terim | Açıklama |
---|---|
POINTER_32 |
32 bit işaretçi. 32 bit Windows'ta bu yerel bir işaretçidir. 64-bit Windows'ta bu, kısaltılmış bir 64-bit işaretçidir. |
POINTER_64 |
64 bit işaretçi. 64 bit Windows'ta bu yerel bir işaretçidir. 32 bit Windows'ta bu, işaretle genişletilmiş 32 bit işaretçidir. Yüksek işaretçi bitinin durumunu varsaymak güvenli değildir. |