GNU/Linux >> Linux の 問題 >  >> Linux

Linux と Mac OSX を区別するための GCC/G++ のマクロ?

次回、プラットフォームで GCC がサポートする定義済みマクロをチェックアウトする場合は、フラグ -dM を指定してプリプロセッサを実行します。 .システムで利用可能なすべての定義済みマクロが一覧表示されます。例:

$ touch dummy.hxx
$ cpp -dM ./dummy.hxx
#define __DBL_MIN_EXP__ (-1021)
#define __FLT_MIN__ 1.17549435e-38F
#define __CHAR_BIT__ 8
#define __WCHAR_MAX__ 2147483647
#define __DBL_DENORM_MIN__ 4.9406564584124654e-324
#define __FLT_EVAL_METHOD__ 0
#define __DBL_MIN_10_EXP__ (-307)
#define __FINITE_MATH_ONLY__ 0
#define __SHRT_MAX__ 32767
#define __LDBL_MAX__ 1.18973149535723176502e+4932L
#define __UINTMAX_TYPE__ long unsigned int
#define __linux 1
#define __unix 1
#define __linux__ 1
...

プラットフォーム名よりも、機能の可用性をテストする傾向があります。 autoconf を使用してみてください。

それ以外の場合、これはプラットフォーム定義の包括的なリストです。

コンパイラ、ライブラリ、アーキテクチャ、およびデバイスに関する定義については、このページもチェックしてください。


__APPLE__ で OSX を検出する 必要に応じてマクロ。 configure を使用することをお勧めします 可能であれば機能を検出しますが、すべてがうまく機能するわけではありません。


__MACH__ を使用しています Mac OS X をテストするには - これは Mac OS X に 100% 固有というわけではありません (古い NeXT ボックスがまだいくつか存在する可能性があります!) が、Mac と Linux の違いを伝えるには十分です。


Linux
  1. コーヒー–Linux用のニュースと天気のアプリ

  2. FreeCAD –Linux用の3Dモデリングおよび設計ソフトウェア

  3. LinuxVPSの推奨事項と禁止事項

  1. LinuxおよびMacOSにpython-openstackclientをインストールします

  2. Docker マシン用の Golang Mac OSX ビルド

  3. Linux および Mac OS X 用の XPerf の代替手段は何ですか?

  1. Linuxユーザーと権限のチートシート

  2. Linux用のOSXのpbcopyのようなもの

  3. Mac OS X と Linux 間のバイナリ互換性