Maison >développement back-end >C++ >Comment détecter de manière fiable l'architecture du processeur au moment de la compilation en C/C ?
Détection de l'architecture du processeur au moment de la compilation : un guide complet
Lors du développement de code C ou C, la détermination de l'architecture du processeur cible pour la compilation est crucial pour garantir des performances et une compatibilité optimales. Cependant, différents compilateurs utilisent leur propre ensemble de définitions de préprocesseur, ce qui rend difficile l'établissement d'une approche universelle.
Heureusement, il existe une méthode complète pour détecter l'architecture du processeur au moment de la compilation, éliminant ainsi le besoin de s'appuyer sur des données non fiables. -définitions standards. Voici une solution fiable :
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 } }
Ce code détecte un large éventail d'architectures de processeur, couvrant les plates-formes modernes et héritées. Il s'appuie sur des définitions de préprocesseur standards, garantissant la compatibilité avec différents compilateurs. En incorporant cette fonction dans votre code, vous pouvez déterminer avec précision l'architecture cible lors de la compilation, ce qui vous permet d'optimiser votre code en conséquence et d'éviter les problèmes spécifiques à la plateforme.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!