오류, 버그, 질문 - 페이지 1647

 
Vasiliy Sokolov :

다음 동작을 설명하십시오.

안정적이고 주어진 시간에 또는 실행 표시기의 첫 번째 눈금에 있습니까?

감시 창에 _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 :

차이점이 뭐야?

첫 번째 경우에는 변수가 전달되고 두 번째 경우 에는 연산 결과 가 전달됩니다. 그리고 무화과는 무엇을 위해 쌓여 있는지 알고 있습니다.

사실, 링크에 대한 이 오류는 매우 오랫동안 화를 돋우어 왔으며 강력하게 존재하지 않아야 합니다.

 
A100 :

차이점이 뭐야?

차이점은 첫 번째 경우에는 오류가 없다는 것입니다 :)
 

ArrayResize 함수 에 대한 제안 사항이 있습니다. Reserve_size 매개변수를 -1로 설정하는 기능을 추가해야 합니다. 이는 이전 값 세트를 사용함을 의미합니다. 그러면 이 값을 저장하거나 휴대할 필요가 없습니다. 필요한 준비금으로 먼저 크기를 조정한 다음 더 이상 걱정하지 않아도 됩니다. 그렇지 않으면 크기를 조정하는 일부 함수에 배열을 전달할 때 계속해서 불편을 겪지만 사전 설치된 예비에 대해 아무 것도 알지 못하고 결과적으로 그것을 쓰러뜨리고 불필요한 메모리 재할당으로 이어집니다. 결국, 내가 이해하는 바와 같이 이 값은 배열의 어딘가에 저장됩니다. 아님?