mql5 언어의 특징, 미묘함 및 작업 방법 - 페이지 210

 
fxsaber # :

이해하지 못했습니다. 영점 조정은 유용한 것이므로 의미가 있습니다.

제로화를 위한 ZeroMemory가 있으며 제로화는 일반적으로 올바르게 작동하지 않습니다. 다음은 예입니다 .

 
A100 # :

제로화를 위한 ZeroMemory가 있으며 제로화는 일반적으로 올바르게 작동하지 않습니다. 다음은 예입니다 .

잘 작동합니다, 나는 그것을 사용합니다.

 
fxsaber # :

잘 작동합니다, 나는 그것을 사용합니다.

훌륭하다면 예제가 F5를 통해 정지되지만 ZeroMemory를 통해서는 정지되지 않는 이유는 무엇입니까?

그리고 여기에서 {}로 컴파일되지만 ZeroMemory로는 컴파일 되지 않는 이유는 무엇인가요?

 
A100 # :

훌륭하다면 예제가 F5를 통해 정지되지만 ZeroMemory를 통해서는 정지되지 않는 이유는 무엇입니까?

수정될 또 다른 버그이기 때문입니다.

그리고 여기에서 컴파일되는 이유는 - {}로 컴파일되지만 ZeroMemory로는 컴파일되지 않습니다.

이 예시에서는 {}가 작동합니다.

 
fxsaber # :

이 예시에서는 {}가 작동합니다.

이것은 작동하는 버그이며 수정될 예정이며 컴파일되지 않습니다.

 
A100 # :

이것은 작동하는 버그이며 수정될 예정이며 컴파일되지 않습니다.

그래서 주장은 무엇입니까? 속도가 중요한 장소에서 {} 메커니즘을 사용하지 않을 이유가 없습니다.

 
fxsaber # :

그래서 주장은 무엇입니까? 속도가 중요한 장소에서 {} 메커니즘을 사용하지 않을 이유가 없습니다.

움직이는 " 장엄한 "메커니즘 (!)이 이미 두 가지 오류를 보여 주었다는 사실에. 동시에, 더 빠른(적어도 F5를 통해) 시간 테스트를 거친 대안인 ZeroMemory가 있습니다. 선택은 뻔하다

 
A100 # :

움직이는 " 장엄한 "메커니즘 (!)이 이미 두 가지 오류를 보여 주었다는 사실에.

이러한 오류는 전투 사용과 관련이 없습니다.

동시에, 더 빠른(적어도 F5를 통해) 시간 테스트를 거친 대안인 ZeroMemory가 있습니다. 선택은 뻔하다

다음 중 어느 항목이 더 간결하고 논리적인지는 의문의 여지가 없다고 생각합니다.

 int i = 0 ;

int j;
j = 0 ;

배열도 마찬가지입니다.

 
fxsaber # :

이러한 오류는 전투 사용과 관련이 없습니다.

다음 중 어떤 기록이 더 간결하고 논리적인지에 대해서는 의문의 여지가 없다고 생각합니다.

배열도 마찬가지입니다.

다음은 세 번째(그리고 얼마나 더 많은) 실수가 있습니다(!):

 union X {
     int i;
    double x;
};
void OnStart ()
{
    X x[ 10000 ] = {}; //(*)
    bool b = true ;
    for ( int i = 0; i < ArraySize(x) && (b = (x[i].x == 0.0)); i++ );
     Print ( b );
}

결과: 거짓 - 즉. 영점이 발생하지 않습니다(!)

그리고 ZeroMemory와 함께

    X x[ 10000 ];       //(*)
    ZeroMemory ( x ); //(**)

결과: true - 모든 것이 정상임 - 전체 재설정

음, 물론 , 복권 을 하려면 분명히 정확한 항목 대신 더 간결한 항목(1줄 미만)을 사용하십시오. 이것이 당신의 권리입니다.

 
A100 # :

그리고 ZeroMemory와 함께

결과: true - 모든 것이 정상임 - 전체 재설정

 struct MqlTick2 : private MqlTick {};

void OnStart ()
{
  MqlTick2 Ticks[ 4 ] = {}; // OK
  
   ZeroMemory (Ticks); // 'Ticks' - not allowed for objects with protected members or inheritance
}