错误、漏洞、问题 - 页 2895

 
A100:
一个编译错误。

曾经工作过,但在今年年初,他们破坏了函数指针,看来你的代码在MT4中应该仍然有效。

它将发挥作用。

typedef void (*fn)();
void f() {}
fn g() { return f; }
void OnStart()
{
    fn func = g();
    func();
}

也就是说,现在你必须使用一个临时变量(现在你甚至不能使用一个指针数组!!!!)

A100:

这里有一些矛盾,因为

原则上的区别 是什么?

一位管理员很早以前就写过如何进行解析,首先是静态变量,然后是全局描述,然后是函数的主体,在文本中从上到下进行解析

...但这并不准确;)

 
Igor Makanu:

也就是说,现在你必须使用一个临时变量(现在你甚至不能使用指针array!!!!)。

这就是我写这篇文章的原因,这样,开发人员就可以不用临时

 
A100:

这就是为什么我写道,如果可能的话,开发人员可以在没有临时的情况下进行

@fxsaber 写道,他们一发现,可能已经过去一年了,好吧,也许你会被听到
 
Igor Makanu:

也就是说,现在你必须使用一个临时变量(现在你甚至不能使用指针array!!!! )。

你有例子证明你不能这样做吗?

 
A100:

你有例子证明你不能这样做吗?

写了一个例子。

typedef void (*fn)();
void f() {}
fn g() { return f; }
void OnStart()
{
//   fn ptr[10];                                                 //possible use of uninitialized variable 'ptr'
   fn ptr[10] = {0};                                             // OK
   for(int i = ArraySize(ptr) - 1; i >= 0; i--) ptr[i] = g();
   
//   for(int i = ArraySize(ptr) - 1; i >= 0; i--) ptr[i]();     //')' - expression expected
   
   for(int i = ArraySize(ptr) - 1; i >= 0; i--)                  // OK
   {
      fn func = ptr[i];
      func();
   }
}

我很惊讶,由于某些原因,它生成了一个警告fn ptr[10]。//可能使用了未初始化的变量'ptr'

现在我需要弄清楚如何初始化指向函数的指针


在MQL5中曾经可以:ptr[i]()。
 
Igor Makanu:

你可以在MQL5中使用:ptr[i]()之前。

是的...我记得

关于交易、自动交易系统和策略测试的论坛

虫子、虫子、问题

A100, 2020.07.23 02:40

编译时出错

typedef void (*fn)();
void OnStart()
{
        fn ff[ 1 ];
        ff[ 0 ](); //Error:: ')' - expression expected
} 

在去年 的构建中出现了一个错误,所有的编译和工作都正常

交易、自动交易系统和策略测试的论坛

虫子、虫子、问题

A100, 2020.07.23 16:31

我画了2085x32 的旧股票--它都编译得很好--你可以自己试试

 
这是一个编译错误。
class EventChartCustom {
      EventChartCustom() {}
};
bool f()
{
    return (EventChartCustom( 0, 0, 0, 0, NULL ) ? true : false); //(1) Error: 'EventChartCustom' - wrong parameters count
}
但这并不妨碍:
bool f()
{
    if (    EventChartCustom( 0, 0, 0, 0, NULL ) ) //(2) нормально
        return (true);
    else
        return (false);
}

根本的区别是什么?

 
一个编译错误。
class A {
      A() {}
};
void A() {} //(1) Error: 'A' - identifier already used
但这很好。
void A() {} //(2) нормально
class A {
      A() {}
};

根本的区别是什么?

 
来自市场的经验法则。
В Продуктах запрещен вызов любых DLL-библиотек, включая системные библиотеки Microsoft Windows.
如果用户被允许使用DLL,市场产品是否有权扩展其功能?
 

在市场上找不到任何统计数据。因此,给跨平台产品的卖家一个问题。

MT5版本真的比MT4卖得好吗?