1. ホーム
  2. c

[解決済み】プリプロセッサディレクティブでOSをチェックする方法とは?

2022-04-04 16:39:58

質問

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

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

このような方法はないのでしょうか?同じことをするのにもっといい方法はないでしょうか?

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

その 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に準拠しない)

FreeBSD

__FreeBSD__

アンドロイド

__ANDROID__