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

 
Vladimir Simakov :
아니요, 개발자의 논리 자체는 충분히 이해할 수 있지만, 저는 차라리 제가 필요할 때 u'sh'를 명시적으로 표시하고 싶습니다.

char 유형을 정의하는 방법이 명확하지 않다는 것입니다.

 
컴파일 중 오류:
 void OnStart ()
{
         Print ( typename ( char ( 0 ))); // Error: '0' - some operator expected
}

그리고 다음과 같이:

        Print ( typename (( char ) 0 ) ); // нормально

차이점이 뭐야?

 
A100 :
컴파일 중 오류:

그리고 다음과 같이:

차이점이 뭐야?

µl에서는 "(유형) 값"만 보입니다. 유형으로 캐스팅됩니다. 그러나 "유형(값)"은 이미 초기화 유형의 일부이므로 귀하의 경우에는 아무 것도 반환할 수 없습니다. 캐스팅에 대한 수업도 있습니다. 오랫동안 ML을 열지 않았지만))

 
Alexandr Andreev :

µl에서는 "(유형) 값"만 보입니다. 유형으로 캐스팅됩니다. 그러나 "유형(값)"은 이미 초기화 유형의 일부이므로 귀하의 경우에는 아무 것도 반환할 수 없습니다. 캐스팅에 대한 수업도 있습니다. 오랫동안 ML을 열지 않았지만))

음, https://www.mql5.com/en/docs/basis/types/casting 을 엽니다.

블록: 숫자 유형 캐스팅: ... " 명시적 유형 변환은 다음과 같이 작성됩니다."... 더 아래 텍스트

Документация по MQL5: Основы языка / Типы данных / Приведение типов
Документация по MQL5: Основы языка / Типы данных / Приведение типов
  • www.mql5.com
Часто возникает необходимость преобразовать один числовой тип в другой. Не каждый числовой тип допустимо преобразовать в другой, допустимые преобразования в MQL5 показаны на схеме: Сплошные линии со стрелками обозначают преобразования, которые выполняются без потери информации. Вместо типа char может выступать тип bool (оба занимают в памяти 1...
 

예, 저도 확인했습니다. 위에서 작성한 내용에 대해 이 코드를 만난 지 오래되었던 기억이 납니다. 잘못된 정보에 대해 사과드립니다)).

 
A100 :
컴파일 중 오류:

그리고 다음과 같이:

차이점이 뭐야?

예, 이것도 컴파일 오류 입니다.

 #define J '+'            // char

void OnStart ()
{
     Print (( typename )J);
}
 #define J '+'            // char

void OnStart ()
{
     Print (( typename )(J));
}
 
Vladimir Simakov :
아니요, 개발자의 논리 자체는 충분히 이해할 수 있지만, 저는 차라리 제가 필요할 때 u'sh'를 명시적으로 표시하고 싶습니다.

저는 이 논리가 이해가 되지 않습니다. 모든 것을 모든 곳에서 수행할 때 Total Optimization, Resource Reduction이 우선시되며,
문자 유형이 본질적으로 기본 유형인 이유는 유니코드로 수행하여 2바이트로 늘립니다.
따라서 mql 유형 문자열 은 비용이 많이 듭니다.
사실, 추가 지정자를 갖는 것이 더 낫습니다 u'u'

char 유형 고스트만 대체됨

 #define J ( char ) '+'       // char

void OnStart ()
{
     Print (J);           // 43
     Print ( typename (J)); // char
}

그래서 유형의 불일치가 밝혀졌습니다.

 #define J '+'               

void OnStart ()
{
   Print (J);                // 43
   Print ( typename (J));      // ushort
   Print ( typename ( char ));   // char
}

Zamuta는 여전히 이 유니코드를 사용하는 사람입니다.

 
Roman :

예, 이것도 컴파일 오류 입니다.

구문적으로 정당화되는 오류가 있습니다. 대괄호 안에 (typename)이 있는 작업 코드의 예를 제공하십시오. 동일한 성공으로 대괄호 안에 (OnStart)를 쓸 수 있었습니다.

 

모호한 MQL 컴파일러 메시지의 또 다른 예:

 #ifdef __MQL__
void OnStart () {
{
}
#endif //Error: '#endif' - unexpected end of program

그리고 #endif는 어디에 있으며 오류가 실제로 어디에 있는지 추측하는 방법은 무엇입니까?

C++가 오류를 정보로 보고하는 동안

 #ifdef __cplusplus
void OnStart () {
{
} //Error: expected '}' at end of input
#endif
 

mql 개발자가 이 페이지를 읽었으면 합니다.

그럼 일반 검증인은 언제 만드나요???

유효성 검사기의 MT4에 대한 버그입니다. 다른 시간대의 캔들 시가 /종가 , 고/저에 대한 데이터는 가져올 수 없습니다.