Q. MQLでは、PrintFormatなる関数があると思いますが、 この呼び出しの前にDEBUGフラグを参照して、出力するかしないかを一括管理したいと考えております。 この関数は、可変長引数を受け取りますが、 開発者が、可変長引数を持つ関数を定義することは可能なのでしょうか。 以下のような実装は不可能でしょうか。 void PrintIfDebug(string format, 可変長引数) { #ifdef DEBUG PrintFormat(format, 可変長引数); #ifdef } |
A.
MQLでは自前の関数で可変長引数を持たせる事は出来なかったと思います。(MQLの開発者では無いので、絶対とは言い切れませんが・・・) 可変長引数を持たせる事は出来ないので、 StringFormatとPrintを組み合わせてみては如何でしょう? 以下サンプルソースを参考にしてみて下さい。 |
#define DEBUG 1 #define PrintIfDebug DPrint(StringFormat //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { PrintIfDebug( "【%d】%s" , __LINE__ , "test1")); DPrint( StringFormat("【%d】%s" , __LINE__ , "test2")); } void DPrint( String in_str ) { #ifdef DEBUG Print( in_str ); #endif }