Menentukan 32 vs 64-bit dalam C : Penyelesaian Komprehensif
Pengenalan
Menentukan seni bina sasaran kod C (32-bit atau 64-bit) adalah penting untuk memastikan kod keserasian dan mengoptimumkan prestasi. Walaupun soalan asal mencadangkan pendekatan berasaskan makro untuk menyelesaikan perkara ini, terdapat potensi pengehadan dan penyelesaian yang lebih komprehensif diperlukan.
Batasan Penyemakan Makro
Penyemakan makro yang dicadangkan bergantung pada andaian bahawa saiz ULONG_MAX dan UINT_MAX akan berbeza antara 32-bit dan 64-bit persekitaran. Walau bagaimanapun, andaian ini mungkin tidak benar dalam senario merentas platform atau pengkompil tertentu.
Penyelesaian Cross-Platform dan Compiler-Agnostik
Pendekatan yang lebih dipercayai adalah untuk memanfaatkan makro yang telah ditetapkan atau bendera pengkompil yang disediakan oleh pengkompil khusus yang digunakan. Berikut ialah penyelesaian komprehensif yang berfungsi merentas penyusun utama:
// Check Windows #if _WIN32 || _WIN64 #if _WIN64 #define ENVIRONMENT64 #else #define ENVIRONMENT32 #endif #endif // Check GCC #if __GNUC__ #if __x86_64__ || __ppc64__ #define ENVIRONMENT64 #else #define ENVIRONMENT32 #endif #endif // Check Clang #if __clang__ #if __x86_64__ || __ppc64__ #define ENVIRONMENT64 #else #define ENVIRONMENT32 #endif #endif
Pertimbangan Tambahan
Sebagai alternatif, sesetengah penyusun membenarkan tetapan pembolehubah ini terus daripada arahan baris:
-DENVIRONMENT64 for 64-bit -DENVIRONMENT32 for 32-bit
Kesimpulan
Dengan menggunakan penyelesaian yang disediakan, pembangun boleh menentukan dengan tepat seni bina sasaran kod C mereka merentas pelbagai platform dan penyusun, memastikan keserasian kod dan prestasi optimum.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menentukan dengan Boleh Dipercayai jika Kod C Saya Berjalan pada Seni Bina 32-bit atau 64-bit?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!