Dalam pembangunan C, terdapat senario di mana menentukan sama ada kod sedang disusun untuk Seni bina 32-bit atau 64-bit adalah kritikal. Walaupun pendekatan berasaskan makro yang disediakan kelihatan munasabah, mari kita terokai potensi kelemahan dan pertimbangkan strategi merentas platform alternatif.
Penyelesaian berasaskan makro yang dicadangkan, yang mengkaji nilai ULONG_MAX dan UINT_MAX, bergantung pada andaian bahawa nilai ini berbeza untuk seni bina 32-bit dan 64-bit. Walau bagaimanapun, andaian ini mungkin tidak selalunya benar, terutamanya merentasi pengkompil atau konfigurasi platform yang berbeza.
Pendekatan alternatif yang memastikan keserasian merentas platform dan kebebasan pengkompil adalah dengan mentakrifkan secara eksplisit pembolehubah bergantung seni bina yang dikehendaki daripada arahan pengkompil barisan. Sebagai contoh, arahan prapemproses berikut boleh digunakan:
#ifdef ENVIRONMENT64 Define architecture-specific operations for 64-bit #else Define architecture-specific operations for 32-bit #endif
Untuk mengisi pembolehubah ENVIRONMENT64 atau ENVIRONMENT32, semakan khusus platform berikut boleh digunakan:
// Check for Windows #if _WIN32 || _WIN64 #if _WIN64 #define ENVIRONMENT64 #else #define ENVIRONMENT32 #endif #endif // Check for GCC #if __GNUC__ #if __x86_64__ || __ppc64__ #define ENVIRONMENT64 #else #define ENVIRONMENT32 #endif #endif
Sebagai alternatif, ini pembolehubah boleh ditetapkan terus dari baris arahan pengkompil menggunakan bendera seperti -m64 atau -m32. Pendekatan ini memberikan lebih kawalan dan fleksibiliti dalam mentakrifkan logik yang bergantung kepada seni bina.
Dengan memanfaatkan bendera khusus pengkompil atau semakan bergantung pada platform, anda boleh menentukan seni bina kompilasi dalam C , memastikan tingkah laku yang konsisten merentas berbilang penyusun dan platform.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menentukan Seni Bina 32-bit lwn. 64-bit dengan Amanah dalam C Merentasi Platform?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!