Maison >développement back-end >C++ >Comment puis-je détecter de manière fiable le système d'exploitation lors de la compilation du préprocesseur C ?

Comment puis-je détecter de manière fiable le système d'exploitation lors de la compilation du préprocesseur C ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-15 07:10:14260parcourir

How Can I Reliably Detect the Operating System During C Preprocessor Compilation?

Détection du préprocesseur des systèmes d'exploitation en C

La détection du système d'exploitation pendant le traitement du préprocesseur est essentielle pour l'écriture de code C/C multiplateforme. Voici comment y parvenir de manière fiable pour Mac OS X, iOS, Linux et Windows :


La plupart des compilateurs définissent des macros qui identifient le système d'exploitation. Pour la détection du préprocesseur, ces macros prédéfinies sont cruciales. GCC, par exemple, a une liste complète, qui comprend :

</p>
<h1>si défini (WIN32) || défini(_WIN32) || défini(__WIN32__) || défini(__NT__)</h1>
<pre class="brush:php;toolbar:false">// Define something for Windows (32-bit and 64-bit)
#ifdef _WIN64
    // Define something unique for Windows (64-bit only)
#else
    // Define something specific for Windows (32-bit only)
#endif

elif APPLE

#include <TargetConditionals.h>
#if TARGET_IPHONE_SIMULATOR
    // iOS, tvOS, or watchOS Simulator
#elif TARGET_OS_MACCATALYST
    // Mac's Catalyst (bridging iOS API into Mac)
#elif TARGET_OS_IPHONE
    // iOS, tvOS, or watchOS device
#elif TARGET_OS_MAC
    // Other Apple platforms
#else
    // Error: Unknown Apple platform
#endif

elif ANDROID

// Handled elsewhere (Android typically conforms to __linux__)

elif linux

// Linux

elif unix

// Unix

elif défini(_POSIX_VERSION)

// POSIX

else

// Error: Unknown compiler

endif

En utilisant ces macros, vous pouvez détecter de manière fiable le système d'exploitation pendant le traitement du préprocesseur et adaptez votre code en conséquence, garantissant la compatibilité sur différentes plates-formes.

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