[前へ] [目次へ] [次へ]

条件コンパイル


FGESでは特定の識別子が定義されているかどうかによる条件コンパイルを使用することができます。
この条件コンパイルはC/C++における同名のディレクティブと同様に記述できるようになっていますが、
C/C++と違い行単位の命令ではありません。

これらの命令は字句解析の段階で評価されるため、FGESの構文の途中に割り込むことができます。
条件コンパイル命令はネストすることができ、対応関係は追跡されます。

●構文規則

#ifdef 識別子名
#ifndef 識別子名
#else
#endif


●#ifdef
   「識別子名」に指定された識別子がその時点で定義されていれば真として扱います。
   「識別子名」はグローバル変数名またはクラス共有変数名を指定でき、
   クラス共有変数名を指定する場合は :: によってクラスパスを示します。

   「識別子名」が定義されていた場合、
   この命令の直後から対応する #else または #endif までの領域は通常通りコンパイルされ、
   対応する #else から #endif までの領域はコンパイル対象から除外されます。

   「識別子名」が定義されていなかった場合、
   この命令の直後から対応する #else または #endif までの領域はコンパイル対象から除外され、
   対応する #else から #endif までの領域は通常通りコンパイルされます。

●#ifndef
   「識別子名」に指定された識別子がその時点で定義されていなければ真として扱います。
   「識別子名」はグローバル変数名またはクラス共有変数名を指定でき、
   クラス共有変数名を指定する場合は :: によってクラスパスを示します。

   「識別子名」が定義されていた場合、
   この命令の直後から対応する #else または #endif までの領域はコンパイル対象から除外され、
   対応する #else から #endif までの領域は通常通りコンパイルされます。

   「識別子名」が定義されていなかった場合、
   この命令の直後から対応する #else または #endif までの領域は通常通りコンパイルされ、
   対応する #else から #endif までの領域はコンパイル対象から除外されます。

●#else
   対応する #ifdef または #ifndef が偽になった時にコンパイルする領域を記述します。

●#endif
   条件コンパイル領域の終端を示します。


[前へ] [目次へ] [次へ]

最終更新 2017/04/27