トップ  >  リファレンス  >  基本  >  プリプロセッサ  >  条件コンパイル
スポンサーリンク
検索
カスタム検索
リファレンスツリー
オススメ

天才数学者のエドワード・オークリー・ソープの物語とジョン・ケリーの公式は必見です。
条件コンパイル


条件付きコンパイルのプリプロセッサは特定の条件に応じてプログラムの一部をスキップする事が可能です。

条件の形式は以下のいずれかの方法で行えます。

書式:
#ifdef シンボル名
 // シンボル名が既に#defineで定義されている場合、ここにあるコードをコンパイルする
#endif

#ifndef シンボル名
 // シンボル名が#defineで定義されていない場合、ここにあるコードをコンパイルする
#endif





条件付きコンパイルの処理は#elseまたは#endifで終わります。
条件付きコンパイルの判定が真の時、#else〜#endifの間の行は無視されます。


サンプルソース:
#ifndef TestMode
    #define TestMode
#endif

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
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)の二重インクルード防止に良く使用します。

スポンサーリンク



Copyright ©2015 MT4でEA自作しちゃお〜 All Rights Reserved.


Top

inserted by FC2 system