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

 
fxsaber :

도움말은 다음과 같이 말합니다. 초기 값이 지정되지 않은 경우 정적 스토리지 클래스 의 변수는 초기 값을 0으로 사용합니다. 게다가 - 템플릿이 없으면 모든 것이 정상입니다.

 
A100 :

도움말은 다음과 같이 말합니다. 초기 값이 지정되지 않은 경우 정적 스토리지 클래스 의 변수는 초기 값이 0입니다.

템플릿의 경우 다리가 어디에서 자라는지 대략적으로 상상할 수 있으므로 모든 상황에서 템플릿 라인을 추가하는 것이 가능하지 않다는 것을 이해합니다.

공식적으로 이것은 아마도 실수일 것입니다. 그러나 문서에서 인용된 텍스트는 템플릿이 출현하기 훨씬 이전에 작성되었으며 다소 부정확하다고 생각합니다.

 
fxsaber :

그러나 문서에서 인용된 텍스트는 템플릿이 출현하기 훨씬 이전에 작성되었으며 다소 부정확하다고 생각합니다.

문서에는 " 정적 클래스 멤버 는 원하는 값으로 명시적으로 초기화되어야 합니다 ."라는 정반대의 항목도 포함되어 있습니다. 템플릿만 어떤 식으로든 이에 영향을 미치지 않습니다. 따라서 두 경우 모두(템플릿이 있는 경우와 없는 경우) 오류가 발생하거나 발생하지 않아야 합니다. 이것이 바로 모순입니다.
 
MetaTrader 5 build 1619 started (MetaQuotes Software Corp.)
Microsoft Windows XP (X86 based PC), IE 08.00 , Intel Core2 Duo  T7700 @ 2.40 GHz, RAM: 2359 / 3581 Mb, HDD: 17612 / 27784 Mb, GMT+ 02 : 00
C:\Program Files\MetaTrader 5

이 오류를 제공하는 업데이트 후 MetaEditor가 더 이상 시작되지 않습니다.


1616은 잘 작동했지만 1619는 작동하지 않았습니다.

F4를 누른 후 터미널 로그에서

 2017.07 . 07 12 : 00 : 30.109 Error   MetaEditor not found
2017.07 . 07 12 : 39 : 54.296 Error   MetaEditor not found
 
A100 :

나는 당신의 IMHO의 의미를 잘 이해하지 못합니다. 빌드 <= 1596(32비트)을 선택하고 확인합니다(한 줄이라도 즉시 .log 파일에 출력[5-10초]). 1분전에 확인했는데

[어떤 캐시? 항상 뭐? 어딘가에 뭔가가 있었어!?!]

전문가 탭과 MQL5\Logs\ 폴더에 대해 이야기하고 있습니다.

IMHO 그것은 타고난 섬세함으로 작성되었습니다. 이것은 우리 경험 사이의 불일치에 대한 미묘한 힌트입니다. 나에게 5~10초는 즉각적이지 않다. 그리고 내 관찰에 따르면 이 지연은 항상 몇 초로 제한되지 않습니다.

[캐시는 캐쉬이고, 지금까지는 항상 존재하며, 지연된 로깅 문제는 이미 포럼에서 논의된 바 있습니다 - 그것이 당신에게 정말로 중요하다면 - 보세요]

 
Stanislav Korotky :

나에게 5~10초는 즉각적이지 않다. 그리고 내 관찰에 따르면 이 지연은 항상 몇 초로 제한되지 않습니다.

5-10초(경우에 따라 더 많을 수도 있음)였고 이제 보기 메뉴가 없으면 로그가 전혀 업데이트되지 않습니다(!)(하루가 시작된 이후로 몇 시간이 지났고 파일은 0입니다. 전문가 탭에 매일 새로운 라인 이 있다는 사실). "몇 나노초"로 터미널의 신화적 가속을 위해 정상적인 로깅이 중단됩니다.
 

컴파일 중 오류

 struct A {
        A() {}
         int aa;
};
struct B {
         static A a;
};
A B::a;
template < typename T>
struct C {
         static T a;
};
template < typename T>
T C::a;
void OnStart ()
{
        B    x1;
         Print ( x1.a.aa ); //нормально
        C<A> x2;
         Print ( x2.a.aa ); //unresolved static variable 'C<A>::a'
}
이전 사례 https://www.mql5.com/ru/forum/1111/page1943#comment_5410554 와 유사하지만 여기서는 TC::a = 0을 지정하여 오류를 숨길 수 없습니다. // 누락된 A::A( int )
Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • 2017.07.06
  • www.mql5.com
Форум алго-трейдеров MQL5
 

런타임 에러

 void OnStart ()
{
         string text = "1234\0" ;
         Print (   "1>'" ,    text, "'" ); //не выводит завершающую кавычку
         printf ( "2>'%s'" , text );      //нормально
}

결과:

1>'1234
2>'1234'

 

컴파일 중 오류

 #define MACRO( x )       Print ( x )
void OnStart ()
{
        MACRO /**/ ( 10 ); //error: '' - argument expected for the function-like macro
}
 

반대 예상

 class A {};
struct B {
         const A *       a1;   //(1) есть сообщение об ошибке
              A * const a2;   //(2) нет сообщения
};
void OnStart ()
{
        B b1;
        B b2;
        b2 = b1; //error: '=' - not allowed for objects with protected members or inheritance
}
  1. 구조체 B에 문자열(1)만 있는 경우 - 오류 메시지가 있습니다.
  2. 구조체 B에 문자열(2)만 있는 경우 - 메시지 없음
  3. 반대 예상

또한 두 경우 모두(1. 및 2.) 오류가 예상되지 않았습니다.

 void OnStart ()
{
        B b1;
        B b2 = b1; //error: '=' - not allowed for objects with protected members or inheritance
}