質問: if defined(win32)と#ifdef(win32)の違い linux gcc 4.4.1 c99で実行されるプログラムをコンパイルしています。#definesを入れて、windowsまたはlinuxでコンパイルされるコードを分離していました。ただし、このエラーが発生しました。error: macro names must be identifiers. このコードを使用する#ifdef(win32) /* do windows stuff #elif(unix) /* do linux stuff */ #endif ただし、これに変更すると、エラーが修正されました。#if defined(win32) /* do windows stuff #elif(unix) /* do linux stuff */ #endif なぜそのエラーが発生し、なぜ#definesが異なるのかと思っていました。どうもありがとう、
回答: #ifdef foo そして#if defined(foo) 同じだ、しかし、一度にいくつかのことを行うには、定義済みを使用できます。#if defined(foo) || defined(bar)