열거형이 있다고 가정해 보겠습니다. 예를 들어 루프에서 이 열거형의 가능한 모든 값을 순차적으로 가져오는 방법은 무엇입니까?
저것들. tf1++는 일관되게 PERIOD_M1 , PERIOD_M2 , PERIOD_M5를 반환해야 합니다... 언어 도구를 사용하여 이 작업을 수행할 수 없다고 생각합니다.
시도하지는 않았지만 이론적으로 ENUM_MYENUM이 있는 경우 (ENUM_MYENUM)INT_MAX는 열거형에서 최대값을 제공해야 합니다. 그렇지 않으면 유형 캐스팅의 버그입니다. 캐스트 연산자(유형)가 이 유형 자체의 값을 반환 해야 하는 이유 때문에 컨텍스트에서 반드시 유효하지는 않지만 유형에 대해서는 유효합니다.
왜 갑자기?
MIX의 TickSize는 25이고 Digits는 0입니다. 25의 배수가 아닌 정수 가격을 정규화하면 OrderSend 오류가 발생합니다.
바로 다음 지점에서 나는 당신에게 컴퓨터를 욕조에 익사시키라고 조언했습니다. 그러면 모든 것이 훨씬 더 신용이 떨어질 것입니다.
MIX의 TickSize는 25이고 Digits는 0입니다. 25의 배수가 아닌 정수 가격을 정규화하면 OrderSend 오류가 발생합니다.
글쎄, 그러한 논리로 0.25 단계의 경우 정규화는 오류를 줄 것입니다. 정규화의 작업은 가격을 일부 이국적인 가격 단계로 조정하는 것이 아니라 부동 소수점 숫자를 주어진 정밀도로 반올림하는 것 입니다. 오류가 발생하지 않습니다.
아마도 두 가지 함수를 도입해야 할 것입니다. 1 - 열거의 요소 수를 반환하고, 2 - 숫자별로 요소를 반환합니다.
enum에서는 예를 들어 아래와 같이 요소에 값을 할당할 수 있습니다. 열거형은 배열이 아닙니다.
C#과 같은 언어는 열거형 이름을 지정해야 하지만 C++ 및 따라서 MQL4/5는 열거형을 상당히 느슨하게 처리합니다. 만일을 대비하여 이 넌센스가 C++에서와 같이 MQL5에서 컴파일되는지 확인했습니다.
enum에서는 예를 들어 아래와 같이 요소에 값을 할당할 수 있습니다. 열거형은 배열이 아닙니다.
그래서 무엇? 선언 순서대로 해당 요소를 반복하는 것이었습니다.
프로그래머 참고 사항:
이제 열거를 편집해야 하는 경우 한 곳에서 한 번에 편집합니다. 예를 들어 element_new = 56과 같이 새 요소를 추가해야 합니다.
ENUM_QQ_HELPER(element_new , 56 )
get_enumqq_array() 함수 편집에 대해 걱정하지 마십시오. 이 기술을 X 매크로 https://en.wikipedia.org/wiki/X_Macro라고 합니다. 개발자의 요청에 따라 비슷한 방식으로 표준 열거를 쉽게 끝낼 수 있습니다.
즉시 명확하지 않을 수도 있지만 열거는 다음과 같이 나타났습니다.
열거형이 있다고 가정해 보겠습니다. 예를 들어 루프에서 이 열거형의 가능한 모든 값을 순차적으로 가져오는 방법은 무엇입니까?
저것들. tf1++는 일관되게 PERIOD_M1 , PERIOD_M2 , PERIOD_M5를 반환해야 합니다... 언어 도구를 사용하여 이 작업을 수행할 수 없다고 생각합니다.