
Détection des systèmes d'exploitation dans le préprocesseur C pour le développement multiplateforme
La détermination du système d'exploitation sous-jacent pendant l'étape du préprocesseur est cruciale pour le développement multiplateforme code C/C de la plateforme. Heureusement, la plupart des compilateurs définissent des macros spécifiques qui permettent une détection fiable.
Macros GCC et Clang
Les compilateurs GCC et Clang fournissent une liste complète de macros prédéfinies qui peuvent être utilisées pour l'identification du système d'exploitation :
- Pour Windows : WIN32, _WIN32, WIN32__, __NT
- Pour macOS : APPLE
- Pour Linux : linux
- Pour Unix : unix
- Pour POSIX : _POSIX_VERSION
Exemple pour GCC
Voici un exemple de la façon dont ces macros peuvent être utilisées dans une compilation GCC :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | # if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__NT__)
#ifdef _WIN64
# else
# endif
#elif __APPLE__
# include <TargetConditionals.h>
# if TARGET_IPHONE_SIMULATOR
#elif TARGET_OS_MACCATALYST
#elif TARGET_OS_IPHONE
#elif TARGET_OS_MAC
# else
#error "Unknown Apple platform"
# endif
# else
#error "Unknown compiler"
# endif
|
Copier après la connexion
Important Considérations
- La disponibilité des macros prédéfinies varie en fonction du compilateur utilisé.
- Il est recommandé d'utiliser des protections de macros pour éviter les inclusions multiples d'en-têtes.
- _WIN32 (sans trait de soulignement) permet aux IDE de mettre en évidence les sections de code appropriées pour les plates-formes Windows.
- Windows x64 les compilateurs définissent toujours _WIN32, il peut donc être utilisé comme base commune, puis utiliser un #ifdef _WIN64 interne pour les définitions spécifiques à 64 bits.
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!