Bagaimana untuk Mengesan Seni Bina CPU dengan Amanah pada Masa Penyusunan dalam C/C?

Patricia Arquette
Lepaskan: 2024-11-11 02:12:02
asal
417 orang telah melayarinya

How to Reliably Detect CPU Architecture at Compile Time in C/C  ?

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
    }
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan