Maison > développement back-end > C++ > le corps du texte

Comment puis-je déterminer de manière fiable si mon code C s'exécute sur une architecture 32 bits ou 64 bits ?

Mary-Kate Olsen
Libérer: 2024-11-17 17:43:02
original
496 Les gens l'ont consulté

How Can I Reliably Determine if My C   Code Is Running on a 32-bit or 64-bit Architecture?

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
Copier après la connexion

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
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal