Maison >développement back-end >C++ >Comment puis-je déterminer de manière fiable si mon code C s'exécute sur une architecture 32 bits ou 64 bits ?
Détermination de 32 et 64 bits en C : une solution complète
Introduction
Détermination l'architecture cible du code C (32 bits ou 64 bits) est cruciale pour assurer la compatibilité du code et optimisation des performances. Bien que la question initiale propose une approche macro pour résoudre ce problème, il existe des limites potentielles et une solution plus complète est nécessaire.
Les limites de la macro-vérification
La macro-vérification proposée repose sur l'hypothèse que la taille de ULONG_MAX et UINT_MAX différera entre les environnements 32 bits et 64 bits. Cependant, cette hypothèse peut ne pas être vraie dans certains scénarios multiplateformes ou spécifiques au compilateur.
Une solution multiplateforme et indépendante du compilateur
Une approche plus fiable consiste à exploiter des macros prédéfinies ou des indicateurs de compilateur fournis par le compilateur spécifique utilisé. Voici une solution complète qui fonctionne sur les principaux compilateurs :
// Check Windows #if _WIN32 || _WIN64 #if _WIN64 #define ENVIRONMENT64 #else #define ENVIRONMENT32 #endif #endif // Check GCC #if __GNUC__ #if __x86_64__ || __ppc64__ #define ENVIRONMENT64 #else #define ENVIRONMENT32 #endif #endif // Check Clang #if __clang__ #if __x86_64__ || __ppc64__ #define ENVIRONMENT64 #else #define ENVIRONMENT32 #endif #endif
Considérations supplémentaires
Alternativement, certains compilateurs permettent de définir ces variables directement à partir de la ligne de commande :
-DENVIRONMENT64 for 64-bit -DENVIRONMENT32 for 32-bit
Conclusion
En adoptant le Grâce à la solution fournie, les développeurs peuvent déterminer avec précision l'architecture cible de leur code C sur diverses plates-formes et compilateurs, garantissant ainsi la compatibilité du code et des performances optimales.
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!