Share via


新的資料類型

64 位 Windows 引進三種資料類型類別:固定精確度資料類型、指標精確度類型,以及特定指標精確度類型。 這些類型已新增至開發環境,可讓開發人員準備 64 位 Windows。 這些類型衍生自基本 C 語言整數和長型別。 因此,您可以在編譯及測試 32 位 Windows 的程式碼中使用這些資料類型,然後在以 64 位 Windows 為目標時,使用 64 位編譯器重新編譯。

即使是只以 32 位 Windows 為目標的應用程式,採用這些新的資料類型,您的程式碼也會更強固。 若要使用這些資料類型,您必須掃描程式碼中是否有可能不安全的指標使用方式、多型和資料定義。 例如,當變數的類型為 ULONG_PTR時,它顯然會用於轉換算數運算或多型的指標。 您無法直接使用較舊的資料類型來指出這類使用方式。 (您可以使用衍生類型命名或匈牙利文標記法間接執行這項操作,但這兩種技術都很容易發生錯誤。)

所有這些資料類型都會在 BaseTsd.h 中宣告。 如需詳細資訊,包括這些資料類型的定義,請參閱 Windows 資料類型

固定有效位數

固定精確度資料類型在 32 位和 64 位 Windows 中都是相同的長度。 為了協助您記住這一點,其精確度是資料類型名稱的一部分。 以下是固定精確度資料類型。

詞彙 描述
DWORD32
32 位元不帶正負號的整數
DWORD64
64 位元不帶正負號的整數
INT32
32 位元帶正負號的整數
INT64
64 位元帶正負號的整數
LONG32
32 位元帶正負號的整數
LONG64
64 位元帶正負號的整數
UINT32
未簽署 的 INT32
UINT64
未簽署 的 INT64
ULONG32
未簽署 的 LONG32
ULONG64
未簽署 的 LONG64

指標有效位數

當指標有效位數變更 (,因為 32 位 Windows 上的 32 位和 64 位的 Windows) ,指標有效位數資料類型會據以反映精確度。 因此,在執行指標算術時,將指標轉換成其中一種類型是安全的;如果指標有效位數為 64 位,則類型為 64 位。 計數類型也會反映指標可參考的大小上限。 以下是指標精確度和計數類型。

詞彙 描述
DWORD_PTR
指標精確度的不帶正負號長類型。
HALF_PTR
指標大小的一半。 在包含指標和兩個小欄位的結構內使用。
INT_PTR
指標有效位數的帶正負號整數類型。
LONG_PTR
指標有效位數的帶正負號長類型。
SIZE_T
指標可參考的最大位元組數目。 用於必須跨越指標完整範圍的計數。
SSIZE_T
已簽署 SIZE_T
UHALF_PTR
未簽署 HALF_PTR
UINT_PTR
未簽署 INT_PTR
ULONG_PTR
未簽署 LONG_PTR

特定Pointer-Precision類型

下列新的指標類型會明確調整指標的大小。 在 64 位程式碼中使用指標時請小心:如果您使用 32 位類型宣告指標,作業系統會藉由截斷 64 位指標來建立指標。 (64 位 Windows.) 上所有指標都是 64 位

詞彙 描述
POINTER_32
32 位指標。 在 32 位 Windows 上,這是原生指標。 在 64 位 Windows 上,這是截斷的 64 位指標。
POINTER_64
64 位指標。 在 64 位 Windows 上,這是原生指標。 在 32 位 Windows 上,這是帶正負號的 32 位指標。
請注意,假設高指標位的狀態並不安全。