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

 

컴파일러가 이것을 욕하기 시작한 이유를 말해주세요(첨부된 스크린샷)?

1 년 전에는 모든 것이 괜찮 았지만 지금은 마지막 터미널을 넣고 컴파일하고 지금

그러한 컴파일러 메시지 에 대한 답변은 어디에서 찾을 수 있습니까?

이 경고를 올바르게 해결하는 방법은 무엇입니까?

업데이트 세 번째 화면 추가 - 무해한 코드에 대한 동일한 메시지

그리고 4번째 화면

어떤 종류의 컴파일러 엄격함과 해결 방법은 무엇입니까?

Компиляция - Разработка программ - Справка по MetaEditor
Компиляция - Разработка программ - Справка по MetaEditor
  • www.metatrader5.com
Компиляция — это процесс перевода исходного кода MQL4/MQL5-программы на машинный язык. Ее результатом является создание исполняемого файла программы (*EX4 или *.EX5), который может быть запущен в торговой платформе. Скомпилировать можно любой файл (*.MQ4, *.MQ5 или *.MQH), однако исполняемый файл (*.EX4 или *.EX5) может быть получен только в...
파일:
22.png  6 kb
3.png  4 kb
4.png  5 kb
 
/+------------------------------------------------------------------+
TT
class cl_search_: public cl_search_b<T>
  {
#define ME cl_search_<T>
#define THIS & this
public :
   atype             adres;lin; //Ошибка тут компилятор молчит
   ME               *m[ 2 ],*par;
   atype Adress()                            { return par== NULL ? adres :(adres|(par.m[ 1 ]==THIS? (par.lin^(par.lin<< 1 ))>> 1 : 0 )|par.Adress()); }
   string AdressStrBit( int move= 0 )           { return    "|| " +IntToBitString(adres)+ " " +( string )lin+(par== NULL ? "\n" : (( " " +( string )(par.m[ 1 ]==THIS ?(par.lin^(par.lin<< 1 ))>> 1 : 0 ))+ " \n" +(par.AdressStrBit())));}
   string IntToBitString(atype s= 0 )          { if (s== 0 ) {s=adres;} string itog = "W" ; atype a= 1 ; uchar ss= sizeof (atype)* 8 ; for ( char i=ss- 1 ; i>= 0 ; i--) itog+=( string )( uint )((s&a<<i)> 0 ); return itog;}
   void CorrectPar()                         { if (m[ 0 ]!= NULL ) m[ 0 ].par=THIS; if (m[ 1 ]!= NULL ) m[ 1 ].par=THIS;}

   ME *Select( bool next= true ) { return par== NULL ?  par:((par.m[next]==THIS || par.m[next]== NULL ) ?  par.Select(next) :par.m[next].Start(!next)); }
   
   
   ME *Port(atype a, bool write= true )
     {
#define PORT(A) Port(A&linre,write)
#define NEW new ME(THIS)
       if (m[ 1 ]== NULL && m[ 0 ]== NULL )
        {
         if (!write) return NULL ;
         //lin=(~(atype)0)<<1;
          adres=a&lin;
         return m[a& 1 ]=NEW;
        }
      atype h111=(lin&a)^adres;
      atype linre=(~lin)>> 1 ;
       if (h111== 0 )
fxsaber :
그러한 기능에 직면했습니다.


정적 필드가 있는 클래스를 정의하는 동안 해당 개체가 즉시 생성되면 컴파일 오류가 발생 합니다.

최신 버전에서 컴파일러는 클래스에 유형이 없는 변수에 맹세하지 않았습니다. 하지만 EA는 출시와 동시에 추락했습니다.

 

"기능"을 발견했습니다... 표시기를 4에서 5로 변환하는 데 한 시간 이상을 보냈습니다. 오류가 어디에 있는지 이해할 수 없습니다. tk. 코드는 크로스 플랫폼처럼 보였습니다. 결국 이곳은 눈에 띄지 않는 곳이다. 어떤 이유로 두 매개변수가 바뀌었습니다.

개선?

더 있나요?

 
더 있나요?
StringTrimLeft/오른쪽

문자열 연결

아마도 다른 것이있을 것입니다. 나는 또한 그러한 기능의 전체 목록에 관심이 있습니다.

---

표준 라이브러리 에서 #endif를 검색해야 할 수도 있습니다.

 
// Альтернативное создание папки.
bool FolderCreate2( const string FolderName, const int CommonFlag = 0 )
{
  return(FileOpen(FolderName + "\\", FILE_WRITE | (CommonFlag ? FILE_COMMON : 0)) == INVALID_HANDLE);
}
 
4개에서는 다중 시간 프레임을 얻기 위해 iCustom을 통해 표시기 자체를 호출할 수 있었습니다. 다섯에 대한 링크/예시를 공유하지 않습니까? 어떤 이유로 같은 방식으로 작동하지 않습니다 :(
 

그러나 전투 고문은 고문이 작동을 멈춘 상황에 부딪쳤다. 원인에 들어갈 수 있었습니다. 거의 알아차릴 수 없는 멋진 뉘앙스.

이 코드에서 문제를 보려고 하면 실제로 느낄 수 있습니다.

 // В коде содержится ошибка, которая остановит выполнение этого советника.

input int Range = 0 ;

class A
{
public :
   void f() {}
};

A* const a = new A;

void OnInit () { a.f(); }

void OnDeinit ( const int ) { delete a; }
 
fxsaber :

그러나 전투 고문은 고문이 작동을 멈춘 상황에 부딪쳤다. 원인에 들어갈 수 있었습니다. 거의 알아차릴 수 없는 멋진 뉘앙스.

이 코드에서 문제를 보려고 하면 실제로 느낄 수 있습니다.

주요 규칙 중 하나 - 어떤 수준에서 개체를 디자인하고 같은 수준에서 개체를 분해해야 합니다. 더 높지도 낮지도 않습니다.
 
Slava :
주요 규칙 중 하나 - 어떤 수준에서 개체를 디자인하고 같은 수준에서 개체를 분해해야 합니다. 더 높지도 낮지도 않습니다.

감사합니다. 좋은 규칙입니다. 나는 나 자신의 무능함의 희생양이 되었다. 사실, 그러한 더 분명한 경우에는 더 많은 규칙이 필요합니다.

 // В коде содержится ошибка, которая остановит выполнение этого советника.

input int Range = 0 ;

class A
{
   void f() {}
public :
  A()
  {
     static A* Tmp = & this ;
    
    Tmp.f();
  }
};

void OnInit () { A a; }


Warning smart는 두 경우 모두에 대해 수행할 수 있습니까?

 
fxsaber :

그러나 전투 고문은 고문이 작동을 멈춘 상황에 부딪쳤다. 원인에 들어갈 수 있었습니다. 거의 알아차릴 수 없는 멋진 뉘앙스.

이 코드에서 문제를 보려고 하면 실제로 느낄 수 있습니다.

이 코드의 문제점은 무엇입니까? Deinit에서는 상수 포인터로 객체를 죽였습니다(여기에 핸들이 있다는 것을 알고 있습니다). C ++ 스타일의 사지에서 일반 촬영, 그렇지 않으면 제작자가 모든 사람을 해고했습니다.)))