プリプロセッサディレクティブを使用して OS をチェックするにはどうすればよいですか? 質問する

プリプロセッサディレクティブを使用して OS をチェックするにはどうすればよいですか? 質問する

コンパイルされるオペレーティング システムに応じて、コードが異なる動作をするようにする必要があります。次のようなものを探しています。

#ifdef OSisWindows
// do Windows-specific stuff
#else
// do Unix-specific stuff
#endif

これを実行する方法はありますか? 同じことを実行するより良い方法はありますか?

ベストアンサー1

OS の定義済みマクロこのサイトには、非常に包括的なチェックリストがあります。以下に、チェックリストのいくつかと、その場所へのリンクを示します。

ウィンドウズ

_WIN32   32ビットと64ビットの両方
_WIN64   64ビットのみ
__CYGWIN__

Unix (Linux、*BSD、ただし Mac OS X は除く)

これを見て関連する質問このチェックを使用する際の落とし穴について説明します。

unix
__unix
__unix__

Mac OS X

__APPLE__クラシックにも使用される
__MACH__

両方とも定義されているので、どちらかをチェックすれば機能するはずです。

リナックス

__linux__
linux廃止(POSIX 準拠ではない)
__linux廃止(POSIX 準拠ではない)

フリーBSD

__FreeBSD__

アンドロイド

__ANDROID__

おすすめ記事