Jenis Data Baru

Tiga kelas jenis data diperkenalkan untuk Windows 64-bit: jenis data presisi tetap, jenis presisi pointer, dan jenis presisi pointer tertentu. Jenis-jenis ini ditambahkan ke lingkungan pengembangan untuk memungkinkan pengembang mempersiapkan Windows 64-bit. Jenis-jenis ini berasal dari bilangan bulat bahasa C dasar dan jenis panjang. Oleh karena itu, Anda dapat menggunakan jenis data ini dalam kode yang Anda kompilasi dan uji pada Windows 32-bit, lalu mengkompilasi ulang dengan pengkompilasi 64-bit saat menargetkan Windows 64-bit.

Bahkan untuk aplikasi yang hanya menargetkan Windows 32-bit, mengadopsi jenis data baru ini membuat kode Anda lebih kuat. Untuk menggunakan jenis data ini, Anda harus memindai kode Anda untuk penggunaan pointer, polimorfisme, dan definisi data yang berpotensi tidak aman. Misalnya, ketika variabel berjenis ULONG_PTR, jelas bahwa variabel tersebut akan digunakan untuk transmisi pointer untuk operasi aritmatika atau polimorfisme. Tidak dimungkinkan untuk menunjukkan penggunaan tersebut secara langsung dengan menggunakan jenis data yang lebih lama. (Anda dapat melakukan ini secara tidak langsung dengan menggunakan penamaan jenis turunan atau notasi Hungaria, tetapi kedua teknik rentan terhadap kesalahan.)

Semua jenis data ini dideklarasikan dalam BaseTsd.h. Untuk informasi selengkapnya, termasuk definisi jenis data ini, lihat Jenis Data Windows.

Presisi Tetap

Jenis data presisi tetap memiliki panjang yang sama di Windows 32 dan 64-bit. Untuk membantu Anda mengingat hal ini, presisinya adalah bagian dari nama jenis data. Berikut ini adalah jenis data presisi tetap.

Istilah Deskripsi
DWORD32
Bilangan bulat tidak bertanda 32-bit
DWORD64
Bilangan bulat tidak bertanda 64-bit
INT32
Bilangan bulat bertanda 32-bit
INT64
Bilangan bulat bertanda 64-bit
LONG32
Bilangan bulat bertanda 32-bit
LONG64
Bilangan bulat bertanda 64-bit
UINT32
INT32 tidak ditandatangani
UINT64
INT64 tidak ditandatangani
ULONG32
LONG32 tidak ditandatangani
ULONG64
LONG64 tidak ditandatangani

Presisi Penunjuk

Ketika presisi pointer berubah (yaitu, karena menjadi 32 bit pada Windows 32-bit dan 64 bit dengan Windows 64-bit), jenis data presisi pointer mencerminkan presisi yang sesuai. Oleh karena itu, aman untuk mentransmisikan pointer ke salah satu jenis ini saat melakukan aritmatika pointer; jika presisi pointer adalah 64 bit, jenisnya adalah 64 bit. Jenis hitungan juga mencerminkan ukuran maksimum yang dapat dirujuk oleh penunjuk. Berikut ini adalah jenis presisi dan hitungan pointer.

Istilah Deskripsi
DWORD_PTR
Jenis panjang yang tidak ditandatangani untuk presisi penunjuk.
HALF_PTR
Setengah ukuran pointer. Gunakan dalam struktur yang berisi pointer dan dua bidang kecil.
INT_PTR
Jenis bilangan bulat yang ditandatangani untuk presisi pointer.
LONG_PTR
Jenis panjang yang ditandatangani untuk presisi pointer.
SIZE_T
Jumlah maksimum byte yang dapat dirujuk oleh pointer. Gunakan untuk hitungan yang harus mencakup rentang penuh penunjuk.
SSIZE_T
Ditandatangani SIZE_T.
UHALF_PTR
HALF_PTR yang tidak ditandatangani.
UINT_PTR
INT_PTR yang tidak ditandatangani.
ULONG_PTR
LONG_PTR yang tidak ditandatangani.

Jenis Pointer-Precision Tertentu

Jenis pointer baru berikut secara eksplisit mengukur pointer. Berhati-hatilah saat menggunakan pointer dalam kode 64-bit: Jika Anda mendeklarasikan pointer menggunakan jenis 32-bit, sistem operasi membuat pointer dengan memotong pointer 64-bit. (Semua pointer adalah 64 bit pada Windows 64-bit.)

Istilah Deskripsi
POINTER_32
Penunjuk 32-bit. Pada Windows 32-bit, ini adalah penunjuk asli. Pada Windows 64-bit, ini adalah penunjuk 64-bit terpotok.
POINTER_64
Penunjuk 64-bit. Pada Windows 64-bit, ini adalah penunjuk asli. Pada Windows 32-bit, ini adalah penunjuk 32-bit yang diperluas tanda tangan.
Perhatikan bahwa tidak aman untuk mengasumsikan status bit pointer tinggi.