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 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 kompilasi ulang dengan kompilator 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 penunjuk transmisi 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 Tipe Data Windows.
Presisi Tetap
Jenis data presisi tetap memiliki panjang yang sama di Windows 32 dan 64-bit. Untuk membantu Anda mengingat hal ini, ketepatan adalah bagian dari nama tipe data mereka. Berikut ini adalah jenis data presisi tetap.
Istilah | Deskripsi |
---|---|
DWORD32 |
Bilangan bulat tidak ditandatangani 32-bit |
DWORD64 |
Bilangan bulat 64-bit tanpa tanda |
INT32 |
Bilangan bulat dengan penanda 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 |
tidak ditandatangani INT64 |
ULONG32 |
tidak ditandatangani LONG32 |
ULONG64 |
tidak ditandatangani LONG64 |
Presisi Penunjuk
Saat presisi penunjuk berubah (yaitu ketika menjadi 32 bit pada Windows 32-bit dan 64 bit pada Windows 64-bit), jenis data presisi penunjuk mencerminkan presisi tersebut. 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 pointer dan jenis hitungan.
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 penunjuk. |
LONG_PTR |
Jenis panjang yang ditandatangani untuk presisi penunjuk. |
SIZE_T |
Jumlah maksimum byte yang dapat dirujuk oleh penunjuk. Gunakan untuk suatu hitungan yang harus mencakup rentang penuh dari sebuah pointer. |
SSIZE_T |
Ditandatangani SIZE_T. |
UHALF_PTR |
HALF_PTRyang tidak ditandatangani. |
UINT_PTR |
INT_PTRtidak ditandatangani. |
ULONG_PTR |
LONG_PTRyang 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 pointer asli. Pada Windows 64-bit, ini adalah pointer 64-bit yang terpotong. |
POINTER_64 |
Penunjuk 64-bit. Pada Windows 64-bit, ini adalah pointer asli. Pada Windows 32-bit, ini adalah penunjuk 32-bit yang diperluas isyarat. Perhatikan bahwa tidak aman untuk mengasumsikan status bit pointer tinggi. |