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

 
fxsaber :

왜 갑자기 경고합니까?

uchar로 이 함수에 과부하가 걸리지 않습니다. 챠만 있습니다. 그래서 상수가 127보다 크다고 경고합니다.
 
Sergei Vladimirov :
uchar로 이 함수에 과부하가 걸리지 않습니다. 챠만 있습니다. 그래서 상수가 127보다 크다고 경고합니다.
그렇다면 왜 오류가 전혀 없는 것일까요? 결국, uchar 배열에는 과부하가 없습니다(도움이 거짓말이 아닌 경우).
 
Alexey Viktorov :

진실에 가까운 값을 보여주지만 잘못된 데이터에 따라 계산하면 바퀴벌레는 테스터나 시각화 장치가 아닌 mql5에 있는 것으로 판명됩니다.

일반적으로 귀하의 참여 덕분에 장기적으로 문제를 해결할 것입니다. 그리고 오늘 나는 통화의 다른 유사한 섹션에서 그것을 확인할 것입니다 . 아마도 이것은 여기에서 진드기의 문제일 것입니다. xs?

확인했습니다. 모든 것이 정상으로 간주됩니다. 분명히 이야기의 특정 장소에서 진드기 세대의 바퀴벌레.
 
fxsaber :
그렇다면 왜 오류가 전혀 없는 것일까요? 결국, uchar 배열에는 과부하가 없습니다(도움이 거짓말이 아닌 경우).
그리고 이것은 올바른 질문입니다.
 
fxsaber :
그렇다면 왜 오류가 전혀 없는 것일까요? 결국, uchar 배열에는 과부하가 없습니다(도움이 거짓말이 아닌 경우).
분명히 배열이 동일하기 때문입니다. char와 uchar의 차이점은 컴파일러의 해석에만 있습니다. 사실, 거기에 경고가 있어서는 안 됩니다. 실제로 잘린 것이 하나도 없기 때문에 확신할 수 있습니다.
 
Alexey Navoykov :
분명히 배열이 동일하기 때문입니다. char와 uchar의 차이점은 컴파일러의 해석에만 있습니다. 사실, 거기에 경고가 있어서는 안 됩니다. 실제로 잘린 것이 하나도 없기 때문에 확신할 수 있습니다.
바이트 단위로 복사됩니다. 따라서 서명된 모든 <->는 서명되지 않습니다.
 
A100 :

그러나 이것은(그리고 typedef가 있는 이전 오류) - 도중에 식별된 오류 - 소스 프로그램에 동일한 서명을 가진 typedef가 없기 때문에 아직 주요 오류를 찾지 못했습니다(이 예에서와 같이).

실행 중 오류가 발생하여 원래 프로그램에 가까운 테스트 스크립트를 생성할 수 있었습니다.

 //Script1.mq5
typedef int (*GTW)( uint , uint , int );
#import "Script2.ex5"
         void f( GTW );
#import "Script3.ex5"
         int g( uint , uint , int );
#import
void OnStart () { f( g ); }
//Script2.mq5
#property library
typedef int (*GTW)( uint , uint , int );
void f( GTW ff ) export { ff( 0x1 , 0x1 , 0 ); }
//Script3.mq5
#property library
int g( uint , uint , int ) export
{
         Print ( __FUNCSIG__ );
         return 0 ;
}

결과: 'Script2.mq5'에서 잘못된 함수 포인터 호출

그리고 이제 트릭은... - 모든 파일의 GTW를 GT로 바꾸고 결과를 확인하세요!!?!

 

그러한 함수를 다시 작성하는 방법의 구문을 알려주십시오.

 MqlTick Func()
{
   MqlTick Tick = { 0 };
  
   return (Tick);
}

그런 것에

 MqlTick Func()
{
   return ( MqlTick ( 0 ));
}

또는 그런

 MqlTick Func()
{
   return ( new MqlTick );
}

저것들. 별도의 부분으로 반환되어야 하는 구조의 생성을 규정하지 마십시오.

 

최근(약 한 달) '잡' 서비스 프로젝트 에 대한 토론에서 인용문과 삽화가 포함된 똥같은 텍스트를 입력한 후 모든 것을 보낸 후 ... 구멍 #403


양식을 다시 제출하면 도움이 되지 않습니다. 페이지를 새로고침한 후 모든 내용을 다시 입력해야 합니다.

친애하는 편집자 여러분, 이제 사용자를 위한 새로운 혁명이 무엇이며 어떻게 피할 수 있는지 설명해 주십시오.
 
Alexander Puzanov :

최근(약 한 달) '잡' 서비스 프로젝트에 대한 토론에서 인용문과 삽화가 포함된 똥같은 텍스트를 입력한 후 모든 것을 보낸 후 ... 구멍 #403


양식을 다시 제출하면 도움이 되지 않습니다. 페이지를 새로고침한 후 모든 내용을 다시 입력해야 합니다.

친애하는 편집자 여러분, 이제 사용자를 위한 새로운 혁명이 무엇이며 어떻게 피할 수 있는지 설명해 주십시오.
편집기의 왼쪽 상단 모서리에서 큰 메시지를 보내기 전에 항상 HTML 버튼을 누른 다음 CTRL+A 및 CTRL+C를 누르십시오. 따라서 모든 것이 버퍼에 남아 있습니다. 그리고 오류가 발생하는 경우. 그런 다음 HTML 버튼으로 다시 이동한 다음 CTRL + A 및 CTRL + V로 이동합니다. 신경을 많이 저장합니다.