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

 
컴파일 오류
 struct STRUCT
{
   long l;
  
  STRUCT( void )
  {
  }
};

union UNION
{
  STRUCT Value; // 'STRUCT' has constructor and cannot be used as union member
};
 

1. 문서에 Union 에 대한 설명이 언제 포함됩니까?

2. 단순한 구조 를 대체할 것인가?

3. 문서의 구조에 대해 설명된 대로 유니온 이 유형 캐스팅을 지원합니까?

 

다음은 union 을 사용하여 구조체를 char 배열에 복사하는 방법입니다.

 struct DATA
  {
   int       var1;
   uint      var2;
   float     var3;
   double    var4;
  };

union NAME_BIT
  {
   char   buff[ 20 ];
   DATA  data;
   NAME_BIT() {
       ArrayInitialize (buff, 0 );
   }
  };

int OnInit () {
   NAME_BIT _space, _un_space;
   _space.data.var1 = 100 ;
   _space.data.var2 = 78 ;
   _space.data.var3 = 1.999 f;
   _space.data.var4 = . 0357 ;
   
   ArrayCopy (_un_space.buff, _space.buff);
   
//---
   return INIT_SUCCEEDED ;
}

여기 에서 문제를 해결할 수 있습니다. 사실, _space 에 있던 모든 것이 _un_space 에 복사되었습니다. 구조 정렬에 대한 주요 사항은 버퍼 배열의 크기를 잊지 않는 것입니다. 비록 어떤 이유로 구조에서 필드의 위치를 변경했고 데이터는 여전히 정상적으로 복사되지만 구조의 정렬을 고수하는 것이 좋습니다. 목발 그러나 적어도 그렇습니다))

 
Alexey Viktorov :

어레이가 두 번 재설정되는 이유는 무엇입니까?

)) 제거하는 것을 잊었습니다. 초기화하면 충분하고 그게 다야, 이미 고쳤습니다))
 
F7 메타에디터 충돌
union UNION
{
   uchar Bytes[ sizeof ( MqlTick )];
   MqlTick Tick;
};

void OnStart ()
{
  UNION a, b;
   
  a = b;
}
 
Konstantin :

특히 MqlTick의 크기가 분명히 변경되지 않기 때문에 배열의 크기를 상수로 선언해야 하기 때문일 가능성이 큽니다.)
배열이며 상수로 선언됩니다. 편집기 충돌.
 
fxsaber :
F7 메타에디터 충돌

같은 노래, 아마도 = b를 복사하기 때문일 것입니다. 그가 없어도 모든 것이 좋다
 
fxsaber :
배열이며 상수로 선언됩니다. 편집기 충돌.

삭제하지 못했습니다))
 
다음과 같이 템플릿 사용을 통합에 추가할 계획인지 알려주세요.
 template < typename T>
union structToBytes
{
   uchar bytes[ sizeof (T)];
  T data;
};
 

MT5에서 테스트 에이전트의 캐시를 지우는 시간은 무엇입니까?

그렇지 않으면 나에게 다음과 같이 나타납니다. 최적화했습니다. 실제 틱에서 실행을 시작합니다. 이 경우에는 6GB 캐시를 만듭니다. 테스트 날짜가 변경되면 캐시가 해제됩니다. 이것은 이해할 수 있습니다. 데이터는 다시 동기화됩니다.

하지만 이제 5분 안에 내 캐시를 덮어씁니다. 이것이 정상입니까? 실행을 다시 시작하지 않으면 컴퓨터를 놓고 돌아와서 다시 6GB를 앞뒤로 씁니다. 이것은 하드 디스크가 충분하지 않으며 지워집니다.

테스트 날짜 변경, 조언자 또는 터미널 언로드시 캐시를 지우는 것이 더 논리적이지 않습니까? 왜 제때에 연결해야 합니까?

사유: