Heim > Artikel > Backend-Entwicklung > Wie erkennt man die CPU-Architektur zur Kompilierungszeit in C/C zuverlässig?
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 } }
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!