1. ホーム
  2. c++

[解決済み] プリプロセッサのマクロからプラットフォーム/コンパイラを識別するには?

2022-08-13 02:20:09

質問

Linux、Windows、Mac OSでコンパイルできるクロスプラットフォームなコードを書いています。Windowsでは、私はビジュアルスタジオとmingwをサポートする必要があります。

プラットフォーム固有のコードがいくつかあり、それらは #ifdef .. #endif 環境に配置する必要があります。例えば、ここではwin32に特化したコードを配置しました。

#ifdef WIN32
#include <windows.h>
#endif

しかし、linuxとmac OSはどのように区別すればいいのでしょうか?定義された名前(またはその他)を使うべきですか?

どのように解決するのですか?

以下のような場合 Mac OS :

#ifdef __APPLE__

について MingW をWindows上で実行します。

#ifdef __MINGW32__

について Linux :

#ifdef __linux__

その他のWindowsコンパイラについては このスレッド および この を他のいくつかのコンパイラやアーキテクチャのために使用します。