- マクロ代入( #define )
- プログラムのプロパティ (#property)
- ファイルの読み込み (#include)
- 関数のインポート( #import )
- 条件付きコンパイル( #ifdef、#ifndef、#else、#endif )
条件付きコンパイル( #ifdef、#ifndef、#else、#endif )
プリプロセッサディレクティブはコンパイルする前にソースコードを前処理するためにコンパイラによって使用されます。ディレクティブは常に#で始まります。したがって、コンパイラは変数名、関数名などでのこのシンボルの使用を禁止します。
各ディレクティブはエントリごとに指定されます。1つのエントリで複数のディレクティブを使用することはできません。ディレクティブエントリが大きすぎる場合は、 '\' 記号を使用して複数の行に分割します。この場合、次の行はディレクティブエントリの続きと見なされます。
プリプロセッサの条件付きコンパイルディレクティブは、特定の条件の成立に応じて、プログラムの一部をコンパイルまたはスキップすることを可能にします。
条件は、次のいずれかの形式を取ることが出来ます。
#ifdef 識別子
|
#ifndef 識別子
|
条件付きコンパイルディレクティブは複数の行で続けられ、任意の #else を含んで #endif で終わります。検証条件が true の場合、#else と #endif の間の行は無視されます。検証条件が満たされていない場合は、チェックと #else ディレクティブ( #else が存在しない場合は #endif ディレクティブ)の間の行は全て無視されます。
例:
#ifndef TestMode
|
標準マクロは、プログラムの種類とコンパイルモードに応じて以下のように定義されています。
__MQL5__ マクロは *.mq5 ファイル、__MQL4__ は *.mq4 ファイルをコンパイルする時に定義されます。
_DEBUG マクロはデバグモードでコンパイルする時に定義されます。
_RELEASE マクロはリリースモードでコンパイルする時に定義されます。
例:
//+------------------------------------------------------------------+
|