ホームページ >バックエンド開発 >C++ >C プリプロセッサのコンパイル中にオペレーティング システムを確実に検出するにはどうすればよいですか?

C プリプロセッサのコンパイル中にオペレーティング システムを確実に検出するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-15 07:10:14261ブラウズ

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

C でのオペレーティング システムのプリプロセッサ検出

プリプロセッサ処理中のオペレーティング システムの検出は、クロスプラットフォーム C/C コードを作成するために不可欠です。 Mac OS X、iOS、Linux、および Windows でこれを確実に実現する方法は次のとおりです。


ほとんどのコンパイラは、オペレーティング システムを識別するマクロを定義しています。プリプロセッサの検出には、これらの事前定義マクロが重要です。たとえば、GCC には次のような包括的なリストがあります。

<h1>if Definition(WIN32) ||定義済み(_WIN32) ||定義済み(__WIN32__) ||定義済み(__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定義(_POSIX_VERSION)

// POSIX

else

// Error: Unknown compiler

endif

これらのマクロを使用すると、確実に検出できますプリプロセッサ処理中にオペレーティング システムを変更し、それに応じてコードを調整して、さまざまな間での互換性を確保します。プラットフォーム。

以上がC プリプロセッサのコンパイル中にオペレーティング システムを確実に検出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。