Bagikan melalui


Menghindari Polimorfisme

Jenis data baru mencakup dua jenis polimorfik, INT_PTR dan LONG_PTR. Pada Windows 32-bit, INT_PTR memetakan ke int dan peta LONG_PTRpanjang. Pada Windows 64-bit, kedua jenis memetakan ke jenis intrinsik __int64 . Pengkompilasi MIDL mendukung jenis ini untuk panggilan prosedur jarak jauh, tetapi ada batasan inheren yang harus Anda ingat saat menggunakannya di lingkungan terdistribusi. Pastikan untuk mengomentari kode Anda dengan sesuai.

Terlepas dari ukuran platform, ukuran kawat dari jenis polimorfik ini selalu 32 bit. Saat membatalkan nama pada Windows 64-bit, tanda pustaka run-time memperluas nilai yang ditandatangani dan menetapkan nol ke byte urutan tinggi untuk nilai yang tidak ditandatangani. Saat meletakkan nilai 64-bit pada kawat, durasi memotong byte urutan tinggi. Dengan demikian, hanya nilai 32-bit berurutan rendah yang dapat digunakan.

Gunakan jenis polimorfik hanya jika perlu untuk porting. Untuk antarmuka baru, gunakan jenis bilangan bulat intrinsik MIDL __int32 dan __int64, atau gunakan jenis penunjuk atau handel konteks, mana yang paling tepat untuk jenis data yang ditransfer.

Kompiler 64-bit mendukung __int3264 intrinsik polimorfik baru. Sekali lagi, jenis ini dikembangkan untuk mendukung upaya porting, dalam hal ini untuk mendukung jenis UINT_PTR secara transparan. (Intrinsik lain, __long3264, akan mendukung jenis ULONG_PTR .) Jangan gunakan __int3264 secara langsung; gunakan jenis INT_PTR saat Anda memerlukan jenis polimorfik karena alasan porting.