新的MQL4语法

 

自从Beta版发布以来已经有一段时间了,我在某个地方发现了一个说明,说常规版可能会在一月中旬出现。虽然我怀疑这是否会发生,但也许一些编码者会觉得有兴趣分享他们在Beta版中学习到的想法和问题。

开始讨论新的MQL4源码语法、编辑器、编译器、模式、OOP或其他相关内容是否已经有意义?

请不要报告错误,不要哭闹,只在这个主题中进行建设性的讨论。

 

我发现#include指令如果重复的话会被忽略,也就是说。

int OnStart() {
#include <dummy.mqh>
#include <dummy.mqh>
#include <dummy.mqh>
#include <dummy.mqh>
}

的作用与

int OnStart() {
#include <dummy.mqh>
}

尽管如果你把类的声明放在不同的文件中,这是非常受欢迎的行为,但在帮助文件中并没有提到这一点。

 

新版本似乎更快一点。

动态数组set-as-series似乎可以自动转移。

函数 重载提供了比Switches更好的接口。

 
我希望得到提示,如何定位 "泄漏的内存 "的原因。有什么好的做法吗?
 
Ovo: 我希望得到提示,如何定位 "泄漏的内存 "的原因。有什么好的做法吗?
你是在问一个一般的编程问题,比如确保 "删除动态分配的内存"||"限制递归函数 的使用"。还是你指的是测试版中的内存泄漏错误?
 
ubzen:
你是在问一个一般的编程问题,比如确保 "删除动态分配的内存"||"限制递归函数的使用"。还是你指的是测试版中的内存泄漏问题?


肯定是前者。我在处理未使用的对象引用方面没有任何经验,因为我的背景来自于JAVA。所以我的意思是,在我收到通用的警告信息后,我很感谢有提示可以找到泄漏的对象(如果有这样的提示的话)。现在我正试图从警告打印出来的字节数中找出泄露的对象的类别。

 
Ovo: 肯定是前一个。我在处理未使用的对象引用方面没有任何经验,因为我的背景来自于JAVA。所以我的意思是,在我收到通用的警告信息后,我很感谢有提示可以找到被泄露的对象(如果有这样的提示的话)。现在我正试图从警告打印出来的字节数中找出泄露的对象的类别。

与mt5相比,它是不完整的。应该有另外一行写着类的名称。希望他们能尽快添加这个。

 

好吧,查漏补缺变得非常烦人......比我预期的还要烦人。

我花了一些精力来创建一个工具,但我一点也不成功。虽然我发现我可以重新定义new/delete语句,但我意识到我没有任何东西可以取代它们。如果它们是带括号的函数,那就很简单了,但不幸的是它们是语句。我可以在new/delete语句周围创建一个包装器来注册它们,但这将是非常痛苦的解决方案,而且没有前途。

如果有人对如何检测泄漏源有一些经验,请留言。

 
Ovo:<br / translate="no">.

好吧,查漏补缺变得非常烦人......比我预期的还要烦人。

我花了一些精力来创建一个工具,但我一点也不成功。虽然我发现我可以重新定义new/delete语句,但我意识到我没有任何东西可以替代它们。如果它们是带括号的函数,那就很简单了,但不幸的是它们是语句。我可以在new/delete语句周围创建一个包装器来注册它们,但这将是非常痛苦的解决方案,而且没有前途。

如果有人有一些经验,如何检测泄漏的源头,请给我留言。

也许这些文章(适用于mql5,但同样适用于新的mql4)可以帮助你找到一个解决方案。

MQL5中对象创建和销毁的顺序

在MQL5中使用对象指针
 
angevoyageur:

也许这些文章(适用于mql5,但同样适用于新的mql4)可以帮助你找到一个解决方案。

MQL5中对象创建和销毁的顺序

在MQL5中使用对象指针



谢谢你的说明。

不幸的是,它似乎对处理泄漏没有帮助,它只是解释了它们发生的原因。

到目前为止,我一直在使用的唯一解决方案是为我创建的每一段代码编写单元测试,并在开发过程中经常运行单元测试。因此,如果泄漏出现,我可能会尝试隔离导致泄漏的测试案例。然而,有些测试是相当复杂的,所以这并不是一个简单的解决方案。而且编辑器也是一个非常麻烦的东西。

 

如何区分新的句法?

我觉得我需要一个不同的词来指代 "即将到来的 "语法和 "原始 "语法。似乎MQ并不关心官方名称,而是一直假装它们是兼容的。

所以,看起来我们必须自己找到合适的名字。有什么建议吗?MQL4 V2,OMQL4(即Object-),MQL4.1...?

原因: