템플릿 매개변수가 있는 컴파일러 버그 = void* - 페이지 12

 
fxsaber :

개발자. 예를 들어 OrderSend에서 발생하는 것처럼.

다음은 예입니다. https://www.mql5.com/ru/forum/295485/page11#comment_9959761

같은 질문에 지겹게 대답하고 마침내 경고를 줄 줄 알았는데 아니, 그들은 피곤하지 않습니다.

따라서 MQL은 트레이더가 아니라 프로그래머를 위한 것입니다.

Баг компилятора при параметре шаблона = void*
Баг компилятора при параметре шаблона = void*
  • 2018.12.20
  • www.mql5.com
Ошибка компилятора. Билд 1961, 64 бит...
 
A100 :

명령 컴파일러를 통해 수행하는 숫자로 경고를 끄는 것으로 충분합니다(MetaEditor를 통해 볼 수 없지만 있음).

어떻게 했는지 알려주실 수 있나요?
 
Alexey Navoykov :
어떻게 했는지 알려주실 수 있나요?

컴파일 결과는 파일로 출력되고 이전에 알려진 경고 번호가 없는 행은 이미 거기에서 추출됩니다(경고 단어 뒤에 숫자가 있음)

 
A100 :

컴파일 결과는 파일로 출력되고 이전에 알려진 경고 번호가 없는 행은 이미 거기에서 추출됩니다(경고 단어 뒤에 숫자가 있음)

그렇다면 이러한 경고가 ME에 표시되지 않도록 하려면 어떻게 해야 합니까? 이 숫자를 어디에 두나요?
 
Alexey Navoykov :
그렇다면 이러한 경고가 ME에 표시되지 않도록 하려면 어떻게 해야 합니까? 이 숫자를 어디에 두나요?

명령줄에서 컴파일 중이며 모든 메시지가 명령줄에도 인쇄됩니다. 이것은 MetaEditor IDE에 고정될 수 없습니다. 이것은 말하자면 중요한 경고를 확인하는 최종 편집입니다. IDE에서 경고를 보지도 않습니다. 경고가 너무 많습니다.

 
A100 :

따라서 MQL은 트레이더가 아니라 프로그래머를 위한 것입니다.

프로그래머가 아니라 MQL을 사용합니다. 프로그래머에 대한 이 만트라를 마치십시오. 나는 일반 사용자나 프리랜서보다 MQL을 구사한다고 생각합니다.

따라서 대부분의 언어 사용자가 직면하는 문제를 이해한다고 상당히 합리적으로 말할 수 있습니다.

 
A100 :

명령줄에서 컴파일 중이며 모든 메시지가 명령줄에도 인쇄됩니다. 이것은 MetaEditor IDE에 고정될 수 없습니다. 이것은 이미 최종 컴파일입니다 - 중요한 경고 확인

아, 글쎄요, 그건 흥미롭지 않아요... 그건 그렇고, 왜 명령줄에서 컴파일합니까?
 
Alexey Navoykov :
아, 글쎄요, 그건 흥미롭지 않아요... 그건 그렇고, 왜 명령줄에서 컴파일합니까?

새 빌드가 나왔다고 가정하고 전체 또는 특정 파일만 다시 컴파일해야 합니다. - 목록을 지정하고 목록만/여러 목록이 컴파일됩니다.

아니면 다른 빌드에서 다시 컴파일해야 합니까 - 빌드 번호와 목록을 설정하면 배치 파일이 모든 작업을 수행합니다.

 
A100 :

8에서 4바이트만 얻는다면 이 값의 요점은 무엇입니까? 개발자가 포인터 값을 ulong으로 변환하는 것을 명시적으로 금지했음에도 불구하고(가능하고 저를 믿기 전에는 상위 비트가 0이 아니었습니다)

이 숫자는 포인터 배열에 있는 포인터의 인덱스와 정확히 같은 방식으로 작동한다는 것이 실험적으로 확인되었습니다. 이러한 배열이 포인터에 숫자를 엄격하게 할당한 경우 작동하고 여러 숫자가 해제된 경우 마지막부터 다시 사용합니다. 반대의 첫 번째 사람에게 하나를 해제했습니다. 예를 들어 포인터 유형을 int 크기 구조로 대체하여 이해할 수 있는 동작으로 아키텍처에서 이 디스크립터 시스템을 복제하려는 경우(사실에도 불구하고 파괴된 객체 에 대한 내장 유형으로 true 반환) 그러한 행동은 포인터가 많은 유용한 논리 연산자를 오버로드하는 것을 금지합니다. 이것은 전체 페이스팜입니다) 및 간단한 유형의 모든 이점을 유지하면서 카운터를 통해 개체 및 포인터의 개체군에 대한 엄격한 제어를 유지하면서 이 숫자를 얻을 수 있는 기능 개체 자체에서 상당한 양의 메모리를 절약할 수 있습니다.

그리고 더 평범한 작업에 대해 이야기한다면 이 숫자는 시스템에서 생성된 개체의 수를 나타내며 동적 목록을 기반으로 하는 모든 아키텍처에서 디버깅하는 데 유용합니다. 당연히 나는 그것을 얻는 것을 "속이는" 방법을 알아낸 최초의 사람이 아니며 심지어 4-ki에 대해서만 더 빠른 방법을 제안받았습니다.
 
A100 :

새 빌드가 나왔다고 가정해 보겠습니다. 및/또는 전체 또는 특정 파일만 다시 컴파일해야 합니다.

물론, 하지만 이것은 특별한 경우입니다. 결국 우리는 대부분의 시간을 IDE에서 코딩하고 컴파일하는 데 보냅니다. 따라서 불필요한 경고를 비활성화하는 것이 매우 도움이 될 것입니다.

저 개인적으로는 과한 부분이 많습니다. 예를 들어 문자열에 대한 암시적 캐스팅에 대한 경고입니다. 이것이 불쾌한 결과를 초래할 수 있는 경우를 기억하지 못합니다. 99%의 경우 문자열은 화면이나 파일에 텍스트를 표시하는 데만 사용됩니다.

또는 함수의 반환 유형이 bool이고 0 또는 1을 반환하면 컴파일러도 해당 유형이 부울이 아니라고 맹세한다고 가정해 보겠습니다. VS에는 그런 것이 없습니다. 이러한 상수는 bool에 허용됩니다. 예를 들어 return false 보다 return 0 을 작성하는 것이 더 편리합니다. 왜냐하면 시각화하기가 훨씬 쉽습니다.

일반적으로 내 로그는 이 두 가지 경고로 인해 거의 완전히 막혔습니다. 나는 그것들을 없애고 싶다.)

손에 익으면 아마 직접 완성할 것 같아요. 나는 거기에 많은 아이디어를 가지고 있습니다. 지금까지는 컴파일이 끝날 때 첫 번째 오류(있는 경우)의 시작 부분까지 로그를 자동으로 스크롤하는 작업만 수행했습니다. 이것이 없으면 오류 메시지 를 찾기 위해 목록을 계속 수동으로 회전해야 했습니다. 출혈이 하나 더 있습니다.