我在 MQL4/5 上的几美分:
预处理器指令:
虽然修订后的New -MQL4.56789
编译器为预处理器指令语法打开了一些新的、更复杂的结构#define
,但在尝试在生产代码中使用它们时,我几乎总是手忙脚乱。
可变参数:
MQL4/5 是一种强类型的编译语言,因此不提供可变参数函数的方法。使用最近的一些语法帮助,来自(OOP)基于类的函数(方法)调用接口覆盖,并且可能使用来自所谓函数的一些高级抽象template
--s,有机会为您创建某种语法支持#define
-依赖行为。
函数重载,
template
-s
和 -
typename
依赖动作:
尽管这些技术已经为 MQL4/5 软件领域带来了更多“新”编译器功能,但额外的复杂程度并不能证明这些努力是合理的,因为所产生的原则在其使用受到限制的情况下无法使用export
,virtual
或#import
结构体。
那么如何进行这项工作呢?
好吧,为了快速和迭代的开发需求,人们可能会求助于“几乎可变的” PrintFormat( DEBUG_MASK, ..., ..., ... );
,使用上下文完整(已知)匹配的一组属性与静态的、特定于上下文的#define
-ed匹配DEBUG_MASK
。嵌套的构造FormatString( MASK_A, par1, par2[, FormatString( MASK_B, par3, par4[, FormatString( ... )[, ... ] )[, ... ])
都留给自己的想象。