首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MetaTrader5中不同类型的变量参数列表

MetaTrader5中不同类型的变量参数列表
EN

Stack Overflow用户
提问于 2016-12-23 00:09:23
回答 1查看 381关注 0票数 2

我有一些mql5代码,如果设置了DEBUG宏,我想输出调试消息。我想为这些调试消息使用一个不同的函数(DebugPrint )。我的第一个尝试是创建一个常规函数,但变量参数似乎不起作用。然后,我尝试使用预编译器删除DebugPrint-calls based on this answer,但是编译器的预处理器似乎也无法理解变量参数列表。这是我尝试过的代码:

代码语言:javascript
复制
#ifdef DEBUG
#define DebugPrint(...)
#else
#define DebugPrint(...) Print(__VA_ARGS__)
#endif

关于如何实现我想要做的事情,有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2016-12-29 02:20:16

我对MQL4/5的几点看法:

预处理器指令:

虽然修改后的New-MQL4.56789编译器为#define预处理器指令语法打开了一些新的、更复杂的构造,但在尝试在生产代码中使用它们时,我几乎总是吃尽苦头。

可变参数:

MQL4/5是一种强类型的编译语言,因此不提供可变函数的方法。有了一些最新的语法帮助,来自( OOP )基于类的函数(方法)调用接口覆盖,并可能使用所谓的function-template-s,中的一些高级抽象,就有机会为您的#define-dependent行为创建某种语法支持。

函数重载,

template-s

typename-dependent操作:

虽然这些技术为MQL4/5软件领域带来了更多的“新”编译器特性,但额外的复杂性水平并不能证明所做的努力是合理的,因为在exportvirtual#import构造限制其使用的情况下,所产生的原则是不能使用的。

那么,如何让它工作呢?

好的,为了快速和迭代开发的需要,可以使用针对静态的、特定于上下文的"almost-variadic" DEBUG_MASK.属性的上下文完全(已知)匹配的PrintFormat( DEBUG_MASK, ..., ..., ... );来实现#define-edFormatString( MASK_A, par1, par2[, FormatString( MASK_B, par3, par4[, FormatString( ... )[, ... ] )[, ... ])的嵌套构造留给了人们自己的想象。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41287335

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档