0

誰かが私のコードを WIN32 と LINUX 以外のシステムでコンパイルしようとしたときに、エラーを表示したいと考えています。しかし、このコード:

#ifdef WIN32
    // Some code here for windows
#elif LINUX
    // Some code for linux
#else
#error OS unsupported!
#endif

しかし、これは私にエラーを与えます:

#error OS 未対応

コンパイラは他に何も言わず、エラーだけです。なにが問題ですか?

4

2 に答える 2

2

ここに 2 つの問題があります。

  • your#elifは、シンボルの単なる存在をテストするのではなく、その真 (つまり、定義済みゼロでないこと) をテストします。#elif defined(...)一貫性を保つために、最初に andを使用する必要があります#if defined(...)

  • 一致する記号が間違っています。それぞれ、_WIN32およびを使用する必要があり__linux__ます。その他のプラットフォームについては、このリファレンスを参照してください。

于 2013-03-04T22:42:55.180 に答える
1

LINUX標準の定義済みマクロではありません。あなたはおそらくそうでないことを確認したいでしょ__linuxLINUX

いくつかのコード チェックは_WIN32知っていますが、Windows では何が正しいのかわかりません。

于 2013-03-04T22:41:01.470 に答える