错误、漏洞、问题 - 页 2891

 
A100:

这可能是在编译器客观上没有信息的时候。

也就是说,f()可能已经初始化了i,也可能没有。而在这种情况下,C++编译器会发出警告,但MQL编译器却没有。

在C++中,内存单元的地址是不隐藏的,这就是为什么变量被初始化为垃圾的原因。
在Mql中,内存单元的地址是隐藏的,无法访问。这就是Mql开发者把编译器搞得一团糟的原因 ))

总之,总是初始化变量,你就不会感到头疼了。
 
Roman:

是的,但是在第一次迭代之前,j变量还没有被初始化,这也是编译器所发誓的。

如果你不使用这个变量,或者把赋值i=j放在循环体的下面,这与第一个选项的执行相同,就不会有警告。编译器并不检查循环的逻辑和执行顺序,它从上到下检查语法,我想是这样,我不确定)

 
网站搜索服务中存在一个错误。这一搜索 并没有产生这一结果
 

fxsaber:

而在其他情况下。

点击回复而不是摇动终端 - 一个伟大的创新

 
编译错误。
#define  MACRO(X)\ //Error: '\' - unexpected in macro definition
              X
 
TheXpert:

如果你按下回复键,你就会下载终端--这是一项伟大的创新。

这都是同样的事情...与我几乎被钉在这里的问题(在相同的下拉菜单钱包和未读主题 - 只是双胞胎兄弟),和你的,但(我不知道如何任何人)我挂这样的..."事情。"

那要怎么处理这个铭文呢?没有任何链接可以查看谁被问及原因,没有(也许它在钱包里,但我没有看)。

非常顽固的印象是,所有这些对网站的 "奇妙 "变化都是由一个人做出的,....。并亲自为自己。正是他认为他自己需要的方式。而且他根本不在乎我们的意见......。

 
Сергей Таболин:

那要怎么处理这个铭文呢?

我不知道,当有正常的应用时,它就消失了。
 

REASON_ACCOUNT 发生变化时,预计会收到以前的账户并终止工作,从逻辑上讲,但是没有,如果账户发生了变化,我们在REASON_ACCOUNT的deinit中收到一个新的数字。

从逻辑上讲,程序应该完成对当前数据的处理,在进行新的调用时发送新的数据,而不是在这个过程中改变数据......

 
Vladimir Pastushak:

REASON_ACCOUNT 发生变化时,预计会收到以前的账户并终止工作,从逻辑上讲,但是没有,如果账户发生了变化,我们在REASON_ACCOUNT的deinit中收到一个新的数字。

程序在逻辑上应该用当前数据完成工作,并在进行新的调用时传递新的数据,在此过程中不改变数据...

下面是演示不正确行为的代码

//+------------------------------------------------------------------+
//|                                                         Test.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   Print("Start ", (string)AccountInfoInteger(ACCOUNT_LOGIN));
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   if(reason == REASON_ACCOUNT)
      Print("Stop ", (string)AccountInfoInteger(ACCOUNT_LOGIN));
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---

  }
//+------------------------------------------------------------------+

结果

2020.10.28 17:23:05.725 Test (EURUSD,M1)        Stop 600....
2020.10.28 17:23:06.306 Test (EURUSD,M1)        Start 600....
2020.10.28 17:23:17.478 Test (EURUSD,M1)        Stop 535....
2020.10.28 17:23:18.156 Test (EURUSD,M1)        Start 535....
 
Vladimir Pastushak:

REASON_ACCOUNT 发生变化时,预计会收到以前的账户并终止工作,从逻辑上讲,但是没有,如果账户发生了变化,我们在REASON_ACCOUNT的deinit中收到一个新的数字。

程序应该在逻辑上完成对当前数据的处理,并在进行新的调用时发送新的数据,而不是在这个过程中改变数据...

这不是一个错误,因此行为不会改变。请考虑这个特殊性。