Mengesan Seni Bina CPU pada Masa Kompilasi: Panduan Komprehensif
Apabila membangunkan kod C atau C, menentukan seni bina CPU sasaran untuk penyusunan ialah penting untuk memastikan prestasi dan keserasian yang optimum. Walau bagaimanapun, pengkompil yang berbeza menggunakan set definisi prapemproses mereka sendiri, menjadikannya mencabar untuk mewujudkan pendekatan universal.
Nasib baik, kaedah komprehensif wujud untuk mengesan seni bina CPU pada masa penyusunan, menghapuskan keperluan untuk bergantung pada bukan -definisi standard. Berikut ialah penyelesaian yang boleh dipercayai:
extern "C" { const char *getBuild() { #if defined(__x86_64__) || defined(_M_X64) return "x86_64"; #elif defined(i386) || defined(__i386__) || defined(__i386) || defined(_M_IX86) return "x86_32"; #elif defined(__ARM_ARCH_2__) return "ARM2"; #elif defined(__ARM_ARCH_3__) || defined(__ARM_ARCH_3M__) return "ARM3"; #elif defined(__ARM_ARCH_4T__) || defined(__TARGET_ARM_4T) return "ARM4T"; #elif defined(__ARM_ARCH_5_) || defined(__ARM_ARCH_5E_) return "ARM5"; #elif defined(__ARM_ARCH_6T2_) || defined(__ARM_ARCH_6T2_) return "ARM6T2"; #elif defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6ZK__) return "ARM6"; #elif defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7S__) return "ARM7"; #elif defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7S__) return "ARM7A"; #elif defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7S__) return "ARM7R"; #elif defined(__ARM_ARCH_7M__) return "ARM7M"; #elif defined(__ARM_ARCH_7S__) return "ARM7S"; #elif defined(__aarch64__) || defined(_M_ARM64) return "ARM64"; #elif defined(mips) || defined(__mips__) || defined(__mips) return "MIPS"; #elif defined(__sh__) return "SUPERH"; #elif defined(__powerpc) || defined(__powerpc__) || defined(__powerpc64__) || defined(__POWERPC__) || defined(__ppc__) || defined(__PPC__) || defined(_ARCH_PPC) return "POWERPC"; #elif defined(__PPC64__) || defined(__ppc64__) || defined(_ARCH_PPC64) return "POWERPC64"; #elif defined(__sparc__) || defined(__sparc) return "SPARC"; #elif defined(__m68k__) return "M68K"; #else return "UNKNOWN"; #endif } }
Kod ini mengesan pelbagai seni bina CPU, meliputi platform moden dan lama. Ia bergantung pada definisi prapemproses standard, memastikan keserasian dengan pelbagai penyusun. Dengan memasukkan fungsi ini ke dalam kod anda, anda boleh menentukan seni bina sasaran dengan tepat semasa penyusunan, membolehkan anda mengoptimumkan kod anda dengan sewajarnya dan mengelakkan isu khusus platform.
Atas ialah kandungan terperinci Bagaimana untuk Mengesan Seni Bina CPU dengan Amanah pada Masa Penyusunan dalam C/C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!