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

 
fxsaber :

최적화 질문입니다. 테스터에서 각 틱마다 추가 작업을 위해 틱을 받아야 합니다. 나는 이렇게 한다.

이 옵션이 더 느려질 것이 분명합니다.

그러나 SymbolInfoTick도 문자열 매개변수가 참조로 전달되지 않기 때문에 속도가 느려집니다.

문자열이 참조로 전달되는 표준 SymbolInfo* 오버로드를 가질 수 있습니까?

물론 있으면 더 좋습니다.

옵티마이저에서는 이러한 함수를 수십억 번 호출합니다.

Symbol() 함수를 호출하면 Digits(), Point(), Period(), GetLastError(), IsStopped(), UninitializeReason() 처럼 전역 변수 _Symbol에 액세스하기 위해 항상 확장됩니다.

 
Ilyas :

Symbol() 함수를 호출하면 Digits(), Point(), Period(), GetLastError(), IsStopped(), UninitializeReason() 처럼 전역 변수 _Symbol에 액세스하기 위해 항상 확장됩니다.

참조로 문자열을 전달하는 것은 어떻습니까?

 
fxsaber :

참조로 문자열을 전달하는 것은 어떻습니까?

분명히 그 이유는 MQL에서 해결할 수 없는 문제 중 하나입니다. const ref에 의해 리터럴을 매개변수로 전달하는 것입니다.

 
fxsaber :

문자열이 참조로 전달되는 표준 SymbolInfo* 오버로드를 가질 수 있습니까?

어떻게 도움이 될까요?

 int SymbolInfoTick( string   symbol ) { return 1 ; }
int SymbolInfoTick( string & symbol ) { return 2 ; }
void OnStart ()
{
         Print ( SymbolInfoTick( _Symbol ));
}

여전히 2가 아닌 1을 반환합니다.

 
fxsaber :

참조로 문자열을 전달하는 것은 어떻습니까?

문자열은 참조로 전달됩니다.

우리는 오래 전에 "copy_on_write lines"로 전환했습니다. -> 한 줄을 다른 줄로 복사할 때 내용이 즉시 복사되지 않고(이전과 같이) 라인 버퍼 에 대한 링크 수가 증가합니다.
예를 들어, 문자열이 매개변수로 값으로 전달되면 참조 수가 증가하고 호출 후에는 감소합니다.

문자열이 변경되면 버퍼 참조 카운트가 확인되고 참조가 두 개 이상인 경우 변경된 문자열이 이전 버퍼에서 "언훅"되고 새 버퍼가 할당됩니다.

 
A100 :

어떻게 도움이 될까요?

여전히 2가 아닌 1을 반환합니다.

변수 _기호 상수
 
Ilyas :
변수 _기호 상수

그러면 과부하가 도움이 되지 않습니다.

 int SymbolInfoTick (       string   ) { return 1 ; }
int SymbolInfoTick ( const string & ) { return 2 ; }
void OnStart ()
{
         Print ( SymbolInfoTick ( _Symbol )); //Error
}

컴파일 오류가 발생합니다

 
Ilyas :

문자열은 참조로 전달됩니다.

우리는 오래 전에 "copy_on_write lines"로 전환했습니다. -> 한 줄을 다른 줄로 복사할 때 내용이 즉시 복사되지 않고(이전과 같이) 라인 버퍼 에 대한 링크 수가 증가합니다.
예를 들어, 문자열이 매개변수로 값으로 전달되면 참조 수가 증가하고 호출 후에는 감소합니다.

문자열이 변경되면 버퍼 참조 카운트가 확인되고 참조가 두 개 이상인 경우 변경된 문자열이 이전 버퍼에서 "언훅"되고 새 버퍼가 할당됩니다.

컴파일 수준에서 모든 것이 결정되었습니까?

 

컴파일러 오류:

 class CArray
{  
};

int ArraySize ( const CArray&);


void Main()
{
  CArray arr;
   ArraySize (arr);   // Нормально
  
  CArray arrays[ 1 ];
   ArraySize (arrays[ 0 ]); // 'arrays' - array required
}
 
fxsaber :

컴파일 수준에서 모든 것이 결정되었습니까?

아니요. 컴파일 타임에는 아직 알려지지 않았습니다.