Bagikan melalui


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.