zaskok3 : MQL4++에서 프로그래밍 방식으로 입력 매개변수를 변경 해야 할 때 extern 없이는 할 수 없습니다. 예를 들어 일반 표시기를 대화식 표시기로 변환할 때 입력을 extern으로 바꿔야 합니다. 컴파일러는 입력 변수를 const로 취급하고 변경하려고 할 때 맹세합니다. extern에는 그러한 문제가 없습니다.
입력 매개변수의 "이중" 사용
상위 5개 MQL5\Indicators\Examples\ADX.mq5에 이 주제에 대한 예가 있습니다.
//--- input parametersinputint InpPeriodADX= 14 ; // Period//---- buffersdouble ExtADXBuffer[];
double ExtPDIBuffer[];
double ExtNDIBuffer[];
double ExtPDBuffer[];
double ExtNDBuffer[];
double ExtTmpBuffer[];
//--- global variablesint ExtADXPeriod;//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+voidOnInit ()
{
//--- check for input parametersif (InpPeriodADX>= 100 || InpPeriodADX<= 0 )
{
ExtADXPeriod= 14 ;printf ( "Incorrect value for input variable Period_ADX=%d. Indicator will use value=%d for calculations." ,InpPeriodADX,ExtADXPeriod);
}
elseExtADXPeriod=InpPeriodADX;
동지 여러분, 컴파일할 때 정기적으로 "내부 컴파일러 오류"가 발생하는 사람이 있습니까? 명백한 이유 없이 재컴파일의 경우 - 정지, 편집기를 닫은 경우, 다시 여는 경우(동일한 탭으로, 동일한 코드로) - 컴파일이 가장 자주 정상적으로 진행됩니다. 이 경우 코드에서 아무 것도 변경되지 않습니다! 그러나 때때로이 오류가 연속으로 여러 번 발생하고 편집기의 첫 번째 다시로드가 도움이되지 않습니다. 지금까지는 재부팅의 결과로 모든 것이 컴파일될 수 있었습니다. 하지만 조만간 작동이 중단될까 두렵습니다. 서비스 데스크에 발생 조건에 대한 데이터를 공동으로 제공하기 위해 유사한 오류가 발생한 다른 사람을 찾고 싶습니다.
그러나 글로벌(외부 아님) 것은 없으며 이것은 좋지 않습니다.
왜 좋지? 전역 변수는 프로그램이 로드될 때 한 번 초기화된다고 명시되어 있습니다.
다른 동작을 원하면 OnInit에서 원하는 대로 초기화하십시오.
이것을 문서에 반영하는 것이 좋을 것입니다.
MQL4++에서 프로그래밍 방식으로 입력 매개변수를 변경 해야 할 때 extern 없이는 할 수 없습니다. 예를 들어 일반 표시기를 대화식 표시기로 변환할 때 입력을 extern으로 바꿔야 합니다. 컴파일러는 입력 변수를 const로 취급하고 변경하려고 할 때 맹세합니다. extern에는 그러한 문제가 없습니다.
입력 매개변수의 "이중" 사용
상위 5개 MQL5\Indicators\Examples\ADX.mq5에 이 주제에 대한 예가 있습니다.
입력 매개변수의 "이중" 사용
상위 5개 MQL5\Indicators\Examples\ADX.mq5에 이 주제에 대한 예가 있습니다.
이제 지표를 대화형 버전으로 변환하려면 소스에 한 줄만 추가하면 됩니다. 연구를 수행하면 추가로 추가됩니다. understudy를 만들기 위한 줄은 여전히 텍스트 전체에서 대체해야 합니다. 왜이 치질, 당신이 한 줄만 바꿀 수있을 때.
컴파일 단계에서 입력 변수 의 const 인식을 제거하는 것을 방해하는 것은 무엇입니까?
이제 지표를 대화형 버전으로 변환하려면 소스에 한 줄만 추가하면 됩니다. 연구를 수행하면 추가로 추가됩니다. understudy를 만들기 위한 줄은 여전히 텍스트 전체에서 대체해야 합니다. 왜이 치질, 당신이 한 줄만 바꿀 수있을 때.
컴파일 단계에서 입력 변수 의 const 인식을 제거하는 것을 방해하는 것은 무엇입니까?
컴파일 단계에서 입력 변수 의 const 인식을 제거하는 것을 방해하는 것은 무엇입니까?
MT5 기록 데이터베이스에 지표의 글로벌 저장. 그들에게는 입력 매개변수가 핵심입니다. 입력 매개변수가 변경되면 이전 매개변수가 있는 표시기가 소멸되고 변경된 매개변수가 있는 동일한 표시기가 재생성됩니다.
즉, 제한은 순전히 아키텍처입니다.
4개에서 입력에서 constness를 제거할 수 있지만 새 MQL4와 MQL5 간에 비호환성이 있습니다. 따라서 우리는 이것을 하지 않을 것입니다. extern 계속 사용
Slawa :
즉, 제한은 순전히 아키텍처입니다.
터미널에서 창 분리
처럼?