条件付きコンパイルのプリプロセッサは特定の条件に応じてプログラムの一部をスキップする事が可能です。
条件の形式は以下のいずれかの方法で行えます。
書式:
#ifdef シンボル名
#endif
#ifndef シンボル名
#endif
条件付きコンパイルの処理は#elseまたは#endifで終わります。
条件付きコンパイルの判定が真の時、#else~#endifの間の行は無視されます。
サンプルソース:
#ifndef TestMode
#define TestMode
#endif
void OnStart(){
#ifdef TestMode
Print("Test mode");
#else
Print("Normal mode");
#endif
}
プログラムタイプとコンパイルモードに応じて、標準マクロは以下のように定義されています。
マクロ |
詳細 |
__MQL4__ |
.mq4ファイルをコンパイルする時に定義される |
__MQL5__ |
.mq5ファイルをコンパイルする時に定義される |
_DEBUG |
デバッグモードでコンパイルする時に定義される |
_RELEASE |
リリースモードでコンパイルする時に定義される |
サンプルソース:
void OnStart(){
#ifdef __MQL5__
#ifdef _DEBUG
Print("Hello from MQL5 compiler [DEBUG]");
#else
#ifdef _RELEASE
Print("Hello from MQL5 compiler [RELEASE]");
#endif
#endif
#else
#ifdef __MQL4__
#ifdef _DEBUG
Print("Hello from MQL4 compiler [DEBUG]");
#else
#ifdef _RELEASE
Print("Hello from MQL4 compiler [RELEASE]");
#endif
#endif
#endif
#endif
}
条件コンパイルはヘッダファイル(.mqh)の二重インクルード防止に良く使用します。