mql5支持不定参数函数吗?

 

比如一个函数想要多个参数怎么设置呢?

void f(double & a, double &b...)
{

}

 

不支持可变参函数。

相同数据类型,可以用数组;不同数据类型可以用结构体(或者结构体数组)。

或者用链表解决。

 
Ziheng Zhuang #:

不支持可变参函数。

相同数据类型,可以用数组;不同数据类型可以用结构体(或者结构体数组)。

或者用链表解决。

好的,谢谢您!

 
Ziheng Zhuang #:

不支持可变参函数。

相同数据类型,可以用数组;不同数据类型可以用结构体(或者结构体数组)。

或者用链表解决。

另外,还有个调试中的问题想请教您,在打断点测试时,为什么F10和F11都是下一步,没有返回上一步的按钮吗?

 
Blur Darkness #:

另外,还有个调试中的问题想请教您,在打断点测试时,为什么F10和F11都是下一步,没有返回上一步的按钮吗?

啊?你要倒退,这是不可能的,只能按顺序执行。

F10不进入函数,F11进入到函数里边,如果要退出函数可以按Shift+F11

 
Ziheng Zhuang #:

啊?你要倒退,这是不可能的,只能按顺序执行。

F10不进入函数,F11进入到函数里边,如果要退出函数可以按Shift+F11

好的,谢谢!

 
Ziheng Zhuang #:

啊?你要倒退,这是不可能的,只能按顺序执行。

F10不进入函数,F11进入到函数里边,如果要退出函数可以按Shift+F11

有个问题找了很久没有找到答案,想请教下您:

MQL5有没有什么方法可以打印变量名,或者将变量名存储为字符串呢?

我看C语言可以用宏定义的方式,但是MQL5找不到相关的函数处理这个问题,谢谢!

 

C语言的宏定义有很多trick,有些属于奇技淫巧。

不知道你遇到什么问题,非得要收集变量的名称。

耶鲁,计科,关于C语言的宏定义 https://www.cs.yale.edu/homes/aspnes/pinewiki/C(2f)Macros.html

//+------------------------------------------------------------------+
//|                                              test_收集变量名.mq5 |
//|                                           Copyright 2022,fxMeter |
//|                           https://www.mql5.com/en/users/fxmeters |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022,fxMeter"
#property link      "https://www.mql5.com/en/users/fxmeters"
#property version   "1.00"
#include <Arrays\ArrayString.mqh>

#define VARNAME(x)  #x
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
{
//---
   CArrayString str;
   ulong ticket;
   double lots;
   string symbol;

   str.Add(VARNAME(ticket));
   str.Add(VARNAME(lots));
   str.Add(VARNAME(symbol));

   int total = str.Total();
   for(int i=0; i<total; i++)
   {
      printf("%d:变量名是:%s",i,str.At(i));
   }

}
//+------------------------------------------------------------------+
//0:变量名是:ticket
//1:变量名是:lots
//2:变量名是:symbol