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 ?

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
Mary-Kate Olsenoriginal
2024-11-17 17:43:02576parcourir

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

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!

Déclaration:
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