如何增加一个函数中传递的枚举?

我正在将枚举传递给函数。在此函数中,我想使用一些整数步来递增传递的枚举。我虽然这是有可能的,因为 enum 根据定义应该是整数。但是由于某些原因,以下操作无效。

这是我的相关代码:

enum THE_ENUM {
    S3,S4,S5,...
};

double getPrice(THE_ENUM level) {
    switch (level) {
        case S3 : return mml[S3];
        case S4 : return mml[S4];
        case S5 : return mml[S5];
        ...
    }
    ...
}

int placeOrder(THE_ENUM tPL) {
    ...
    price = getPrice(S4);     // this works
    price = getPrice(tPL);    // this works
    price = getPrice(tPL+2);  // this doesn't!
    ...
}
...
placeOrder(S3);
...

如何使用传递的枚举访问首次定义的下一个或上一个?

huilovenai 回答:如何增加一个函数中传递的枚举?

事实:MQL4不是经过编译的C语言

  枚举类型的

数据属于某个有限的数据集。定义枚举类型:

     

enum name of enumerable type
    {
    list of values
    };

     

值列表是用逗号分隔的命名常量的标识符的列表。   声明枚举后,将出现一个新的整数值4字节数据类型。新数据类型的声明允许编译器严格控制传递参数的类型,因为枚举引入了新的命名常量。在上面的示例中,一月命名常量的值为0,二月-1月,十二月-11。   

  规则::如果未将某个值分配给作为枚举成员的命名常量,则其新值将自动形成。如果它是枚举的第一个成员,则将为其分配0值。对于所有后续成员,值将基于前一个成员的值加上一个来计算。   

  示例:

enum intervals      // Enumeration of named constants
   {
    month      =  1,// Interval of one month       ---- code-assogned =  1
    two_months,// Two months                  ---- auto-assigned  ~ 2
    quarter,// Three months - a quarter    ---- auto-assigned  ~ 3
    halfyear   =  6,// Half a year                 ---- CODE-assigned =  6
    year       = 12,// Year - 12 months            ---- CODE-assigned = 12
    wild13,//        13 months            ---- auto-assigned  ~13
    decade     =120  // Decade                      ---- CODE-assigned =120
   };

这意味着,需要编译器辅助的 enum 值“ 算术 ”(询问有机会调用在 getPrice( 中进行即时评估/解码的“ 野生前的第二价值 ) 是可能的,但不要指望它是包含电池的低挂水果,可以从已优化编译语言的MQL4语言架构师那里获得。效率和最小延迟的代码。

一个人可能会为MQL4-enum-s实现自己的算法,因为上面的价格级别double getPrice( smart_ENUM aLevelCONST )映射程序正在努力实现,但是使用受限于其限制的受限语言来开发这种设计的成本,请自行考虑(别忘了几年前的惊喜,当 string -不再是string-s时,突然之间没有先验或事前公告后,他们默默地成为 struct -s-一旦事情突然崩溃,每位基金经理,交易员,支持团队成员或API维护人员都可以想象震惊和噩梦以了解为什么(string-> struct的通知是,但是在下一版MQL4 / MetaEditor的帮助文件中...太多的毛发散去了,无数的资金蒸发了直到根–发现工厂崩溃的原因隐藏在帮助文件的切向通知中,并且将“更改”重构为API重新设计... 我们最好不要将自己暴露给类似的情况无法控制的风险ong>,或者不要在移动的沙滩上以类似的“依赖关系”狂奔)

至少,您已被警告:o)

  

注释:

     
      
  • 与C ++不同,MQL4中枚举类型的内部表示的大小始终等于4个字节。也就是说, sizeof( months ) 返回值4。
  •   
  • 与C ++不同,无法在MQL4中声明匿名枚举。也就是说,必须始终在 enum 关键字之后指定唯一名称。
  •   
本文链接:https://www.f2er.com/3142299.html

大家都在问