2011-10-27 16 views
5

MacOSXでマクロ__unix__が定義されていないのはなぜかと思います。UNIX派生システムを識別する一般的なマクロ? (Linux、OSX、BSD、...)

MacOSXはBSD UNIXの派生物ではありませんか?

私のコードで__unix__マクロを定義した場合、いくつかの問題がありますか?最良のオプションは、単一で自分のマクロを定義することでした

#if defined(__unix__) || defined(__APPLE__) || defined(__linux__) || defined(BSD) ... 
... 
#endif 

#ifdef __unix__ 
... 
#endif 

代わりに:現在のプラットフォームをチェックする際に一般的に

は、私のような何かを行うことを好みます場所?例えば:

#if defined(__unix__) || defined(__APPLE__) || defined(__linux__) || defined(BSD) ... 
#define UNIX_ 
#endif 
+1

これを行う場合は、名前に二重のアンダースコアを使用しないでください。 –

+1

あなたのタグの1つを 'c'に変更すると、あなたの問題をより詳しく知ることができます。がんばろう。 – shellter

+0

@WilliamPursell:fixed。ありがとうございました。 – Pietro

答えて

4

POSIXは(sysconf(_SC_VERSION)経由でもアクセス可能)<unistd.h>で定義する_POSIX_VERSIONが必要なので、それを試してみてください。

+0

OKですが、を含める前に、私はPOSIXシステムであることを確認しなければなりません。それ以外の場合、そのファイルは利用できません。そしては小さなファイルであってはならない... – Pietro

+0

まあ、 ''はPOSIXで 'L_ctermid'を定義しなければなりません... – ninjalj

関連する問題