//Test.mqhclass A {};
class B { public:
B() { f(); }
A *g() { returnNULL; }
void f()
{
void *x = g();
if ( true )
return;
delete x; //в build 1650 не работает даже если до delete никогда (!) не доходит
//а ошибка при выполнении возникает именно из-за наличия этой строки
//и указатель в исходном коде действительный (есть проверка)
}
};
//Test.mq5#include "Test.mqh"#import "Test2.ex5"
A *f();
#import
voidOnStart()
{
f();
}
//Test2.mq5#property library#include "Test.mqh"static B b;
A *f() export { returnNULL; }
如果你能让它在专业人员中编译和运行,那就可以了 )
我真的不明白它有什么问题。一切正常。
我真的不明白你不喜欢它的原因。一切正常。
关于交易、自动交易系统和交易策略测试的论坛
虫子,虫子,问题
A100, 2017.08.17 18:45
是的,这是我已经发现的事情。但问题是(过去),在源码中,这个memeber实际上是一个数组,为了简单起见,我决定先处理这个标量。然而,对于阵列来说,同样的技巧并不奏效。我不得不在成员函数中静态地拖动数组。
然而,同样的技巧对数组不起作用。我不得不在成员函数中静态地拖动数组。
这已经是一个编译器错误 - 我们应该告诉服务台
建于1650年。如果连接了几个.ex5模块(主模块和库模块),那么就完全不能工作。到处都有一个形式的错误。
2017.08.18 01:49:59.759 绘图(USDJPY,H1) 无法在'yyy.ex5'中找到'xxx'。
以前一切工作都很正常。即使是现在,在编译MetaEditor 1646+MetaTrader 1650时,一切都能正常工作。
很明显,MetaEditor 1650中存在一个错误,而.ex5文件几乎薄了一倍。为什么要进行这样的实验?
添加代码
结果在上一篇文章中
该图书馆具有一般性质。顺便说一下,在这种情况下不使用返回的f()指针--选项1(但可以使用--见下面的选项2)。编译Test.mq5时,没有错误信息--这意味着编译器不需要定义类(A)。然而,在执行过程中出现了一个错误:无法在'Test2.ex5'中找到'f'。
更多关于
Windows的语言需要改变,才能让人满意...