错误、漏洞、问题 - 页 1647

 
Vasiliy Sokolov:

请解释以下行为。

它是在任何时候都稳定,还是在运行指标的第一个刻度上?

在wotch窗口中缺少_LastError值

 
Alexey Navoykov:

你确定吗?

如果前者是平等的,后者也会是平等的。
两个平台的例子
// MQL4&5-code

#ifdef __MQL5__
  #define show_inputs script_show_inputs
#endif

#property show_inputs
#property strict

sinput double Price1 = 1.234566;
sinput double Price2 = 1.234574;

void NormToConsole( const double Price, const int digits, const string Str )
{
  Print("NormalizeDouble(" + Str + "(=" + DoubleToString(Price, digits + 1) +
        "), " + (string)digits + ") = " + DoubleToString(NormalizeDouble(Price, digits), digits));
}

#define  NORM2CONSOLE(PRICE) NormToConsole(PRICE, 5, #PRICE);

void OnStart()
{  
  NORM2CONSOLE(Price1);
  NORM2CONSOLE(Price2);
  NORM2CONSOLE(Price2 - Price1);    
}
结果
NormalizeDouble(Price1(=1.234566), 5) = 1.23457
NormalizeDouble(Price2(=1.234574), 5) = 1.23457
NormalizeDouble(Price2-Price1(=0.000008), 5) = 0.00001
 

编译错误

void f( int& i ){ Print( i ); }
void OnStart()
{
        int a, b;
        f( a = 5 ); //error: '=' - parameter passed as reference, variable expected
        f( b = a ); //error: '=' - parameter passed as reference, variable expected
}
 
A100:

编译错误

void f( int& i ){ Print( i ); }
void OnStart()
{
        int a, b;
        f( a == 5 ); //error: '=' - parameter passed as reference, variable expected
        f( b == a ); //error: '=' - parameter passed as reference, variable expected
}
 
Vitalii Ananev:
在你的例子中,这个错误是合理的,我的情况不同
 
A100:
在你的例子中,这个错误是合理的,而在我的例子中,情况有所不同

我没有仔细阅读代码,自动认为你有一个有条件的if语句,但你只是有一个叫f的函数。

你应该向函数传递一个变量或一些预先计算好的值,而不是一个表达式。

void f( int& i ){ Print( i ); }
void OnStart()
{
        int a = 5;
        int b = a;
        f(a); //error: '=' - parameter passed as reference, variable expected
        f(b); //error: '=' - parameter passed as reference, variable expected
}
 
Vitalii Ananev:

你必须把一个变量或一些预先计算好的值传给函数,而不是一个表达式。

有什么区别呢?

//1.mq5
         a = 5;
         f( a );
//2.mq5
         f( a = 5 );
 
A100:

有什么区别呢?

在第一种情况下,传递的是一个变量,在第二种情况下,传递的是操作的结果。谁知道那里有什么东西被设计成inta的?

事实上,这个参考错误已经烦人了很久,它根本就不应该存在。

 
A100:

有什么区别?

不同的是,在第一种情况下,没有错误 :)
 

关于ArrayResize函数,我们有一些建议。 我们需要增加将reserve_size 参数设置为-1 的可能性,这意味着使用之前的设置值。 这样 我们就不必存储或携带这个值了。 首先用所需的保留值调整它的大小,然后就不用担心 了。否则,当你把一个数组传递给某个函数时,它会调整它的大小,但对它的预设储备一无所知,结果是把它耗尽,导致以后不必要的内存重新分配。 毕竟,我想,这个值是存储在数组的某个地方。或者说不是吗?