Bagikan melalui


Masalah Umum Migrasi Visual C++ 64-bit

Saat Anda menggunakan pengkompilasi Microsoft C++ (MSVC) untuk membuat aplikasi yang akan dijalankan pada sistem operasi Windows 64-bit, Anda harus mengetahui masalah berikut:

  • dan int adalah long nilai 32-bit pada sistem operasi Windows 64-bit. Untuk program yang Anda rencanakan untuk dikompilasi untuk platform 64-bit, Anda harus berhati-hati untuk tidak menetapkan pointer ke variabel 32-bit. Pointer adalah 64-bit pada platform 64-bit, dan Anda akan memotong nilai pointer jika Anda menetapkannya ke variabel 32-bit.

  • size_t, time_t, dan ptrdiff_t adalah nilai 64-bit pada sistem operasi Windows 64-bit.

  • time_t adalah nilai 32-bit pada sistem operasi Windows 32-bit di Visual Studio 2005 dan yang lebih lama. time_t sekarang menjadi bilangan bulat 64-bit secara default. Untuk informasi selengkapnya, lihat Manajemen Waktu.

    Anda harus mengetahui di mana kode Anda mengambil int nilai dan memprosesnya sebagai nilai size_t atau time_t . Ada kemungkinan bahwa jumlahnya dapat tumbuh menjadi lebih besar dari angka 32-bit dan data akan dipotong ketika diteruskan kembali ke int penyimpanan.

Pengubah %x (format hex int ) printf tidak akan berfungsi seperti yang diharapkan pada sistem operasi Windows 64-bit. Ini hanya akan beroperasi pada 32 bit pertama dari nilai yang diteruskan ke dalamnya.

  • Gunakan %I32x untuk menampilkan tipe integral 32-bit dalam format hex.

  • Gunakan %I64x untuk menampilkan tipe integral 64-bit dalam format heksa.

  • %p (format hex untuk penunjuk) akan berfungsi seperti yang diharapkan pada sistem operasi Windows 64-bit.

Untuk informasi selengkapnya, lihat:

Baca juga

Mengonfigurasi proyek C++ untuk target 64-bit, x64
Panduan Porting dan Peningkatan Visual C++