Heim > Backend-Entwicklung > C++ > Wie erkennt man die CPU-Architektur zur Kompilierungszeit in C/C zuverlässig?

Wie erkennt man die CPU-Architektur zur Kompilierungszeit in C/C zuverlässig?

Patricia Arquette
Freigeben: 2024-11-11 02:12:02
Original
487 Leute haben es durchsucht

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

Erkennen der CPU-Architektur zur Kompilierungszeit: Ein umfassender Leitfaden

Bei der Entwicklung von C- oder C-Code ist die Bestimmung der Ziel-CPU-Architektur für die Kompilierung wichtig entscheidend, um optimale Leistung und Kompatibilität sicherzustellen. Allerdings verwenden verschiedene Compiler ihre eigenen Präprozessordefinitionen, was es schwierig macht, einen universellen Ansatz zu etablieren.

Glücklicherweise gibt es eine umfassende Methode, um die CPU-Architektur zur Kompilierungszeit zu erkennen, sodass man sich nicht mehr auf andere verlassen muss -Standarddefinitionen. Hier ist eine zuverlässige Lösung:

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
    }
}
Nach dem Login kopieren

Dieser Code erkennt eine breite Palette von CPU-Architekturen, die moderne und ältere Plattformen abdecken. Es basiert auf Standard-Präprozessordefinitionen und gewährleistet so die Kompatibilität mit verschiedenen Compilern. Durch die Integration dieser Funktion in Ihren Code können Sie die Zielarchitektur während der Kompilierung genau bestimmen, sodass Sie Ihren Code entsprechend optimieren und plattformspezifische Probleme vermeiden können.

Das obige ist der detaillierte Inhalt vonWie erkennt man die CPU-Architektur zur Kompilierungszeit in C/C zuverlässig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage