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

 
Комбинатор :


나는 당신이 최적화를 훨씬 더 잘 이해하고 있다고 생각하지만 단순한 사용자의 관점에서 보면 모든 것이 조금 이상해 보입니다. MQL 컴파일러가 C++에 필적하는 속도로 코드를 생성한다고 주장하지만 갑자기 배열이 MQL에서는 전혀 빠르지 않습니다.

관리 언어는 배열이 엄격하게 제어되어야 함을 분명히 의미합니다. 이것이 없으면 언어를 보호할 수 없습니다.

정적 배열 은 제어가 더 간단하고 코드 최적화 단계에서 부분적으로 단순화할 수 있습니다. 동적 제어의 경우 더 크고 단순화하기 어렵습니다.

코드는 C++ 품질 수준에서 생성되지만 관리되는 항목에는 물론 오버헤드가 있습니다. C++ 수준의 수학, 루프 및 기타 모든 것.

 
Комбинатор :

배열 인덱스 는 기껏해야 직접적인 단일 어셈블러 명령어로 요약되므로 문제는 여전히 유효합니다.

관리 언어에서 상수 인덱싱이 있는 정적 배열에서만. 즉, 옵티마이저가 100% 확신하는 경우 경계와 버퍼의 존재를 확인할 필요가 없습니다.

조건을 위반하면 버퍼의 존재 제어 및 경계 [s]가 나타납니다.

프로그래밍을 할 때 필요한 기본 지식입니다.

 
Vladimir Pastushak :
오버로드 된 함수에 열거 형이 있고 문자열이 있으면 적분에 대해 호출 할 때 문제가 발생합니다 ...

나는 이것에 주목했다 https://www.mql5.com/en/forum/1111/page1297#comment_1382986

하지만 아무 것도 변경하지 않았으므로 템플릿의 ::EnumToString은 많은 경우에 쓸모가 없습니다.

Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • 2015.02.16
  • www.mql5.com
Общее обсуждение: Ошибки, баги, вопросы
 

우리는 계속해서 프로젝트 를 탐색하고

#resource "\\Experts\\[Project 2018]\\Expert Name\\Resources\\img\\open_buy.bmp"

resource name is too long '\Experts\[Project 2018]\Expert Name\Resources\img\open_buy.bmp' CPanel.mqh 6 1

제한된 경우 프로젝트가 필요한 이유는 무엇입니까?

프로젝트는 PROJECT!!!!! 1000개의 사진, 소리, 도움말 파일이 있을 수 있으며 모든 것을 하나의 폴더에 버려야 합니까?

나는 카탈로그의 vinaigrette 팬이 아닙니다. 많은 품질을 작성하려면 머리뿐만 아니라 모든 곳에서 순서가 있어야합니다 ...



 
A100 :

나는 이것에 주목했다 https://www.mql5.com/en/forum/1111/page1297#comment_1382986

하지만 아무 것도 변경하지 않았으므로 템플릿의 ::EnumToString은 많은 경우에 쓸모가 없습니다.

안녕하세요 fxsaber에서:

 // Для enum-ов
template < typename T>
string EnumToString2( T Value ) { return ( EnumToString (Value)); }
 
// Для кастомных типов
template < typename T>
string EnumToString2( const T& ) { return ( NULL ); }
 
 
// Для стандартных типов
#define ENUMTOSTRING(A) string EnumToString2( A ) { return ( NULL ); }
  ENUMTOSTRING( int )
  ENUMTOSTRING( string )
// .....
#undef ENUMTOSTRING
 
#define EnumToString EnumToString2
 
template < typename T>
string ETS( T t ) { return ( typename ( t ) == "int" ? "OK" : :: EnumToString ( t ) ); }
enum ENUM {     ENUM__ };
 
void OnStart ()
{
        ENUM i1 = ENUM__;       Print ( ETS( i1 )); //нормально
         int   i2 = 0 ;             Print ( ETS( i2 )); //"ошибка компиляции"
         string i3 = NULL ;       Print ( ETS( i3 )); //"ошибка компиляции"
}
 
Комбинатор :

따라서 간단한 배열에서 인덱스로 요소를 가져오는 것은 매우 빠른 작업이어야 합니다. 그렇지 않나요?

그러나 복용하지 않는 것이 더 빠릅니다. 어떻게 든 정수 대신 부동 소수점 숫자를 사용하면 내 프로그램이 1.5배 더 빠르게 실행된다는 것을 알았습니다. 나 자신을 위해 FPU 보조 프로세서가 대부분 유휴 상태였다는 사실로 설명했습니다. 주로 정수를 사용합니다. 고려 중인 경우 다음을 고려할 수도 있습니다. SQRT가 FPU에서 실행되고 ALU를 위한 시간이 확보되고 대부분 병렬로 작동하기 시작합니다.
 
Vladimir Pastushak :

우리는 계속해서 프로젝트를 탐색하고 발견합니다.

#resource "\\Experts\\[Project 2018]\\Expert Name\\Resources\\img\\open_buy.bmp"

resource name is too long '\Experts\[Project 2018]\Expert Name\Resources\img\open_buy.bmp' CPanel.mqh 6 1

제한된 경우 프로젝트가 필요한 이유는 무엇입니까?

프로젝트는 PROJECT!!!!! 1000개의 사진, 소리, 도움말 파일이 있을 수 있으며 모든 것을 하나의 폴더에 버려야 합니까?

나는 카탈로그의 vinaigrette 팬이 아닙니다. 많은 품질을 작성하려면 머리뿐만 아니라 모든 곳에서 순서가 있어야합니다 ...

컴파일 단계에 포함된 개체에 대해 부분적으로 정확하고 명명된 개체로 코드에 들어가지 않습니다.

사실 EX 파일 내부에는 64자의 명명된 리소스에 대한 물리적 제한이 있습니다.
 
Artyom Trishkin :

안녕하세요 fxsaber에서:

위의 코드는 컴파일러 결함을 기반으로 합니다.

 void f(       int   ) { Print ( 1 ); } //(1)
void f( const int & ) { Print ( 2 ); } //(2)
void OnStart ()
{
     int i = 0 ;
    f( i ); //нормально ???
}

결과: 1... 왜 2가 아닌가요?

C++이 컴파일 중 오류를 보고한다는 사실에도 불구하고 두 함수 모두 분명히 적합하고 게다가 현재 MQL에 존재하는 순서 는 함수를 명시적으로 호출하는 것을 허용하지 않습니다(2)

이 버그가 수정되면 위의 코드는 대부분 작동하지 않게 됩니다.

 

컴파일 오류: 트리 최적화 오류

 class A {
public :
    void f() {}
};
typedef A* (*fn)();
#import "Test.ex5"
    fn g();
#import
void OnStart () { g()().f(); }
 
Renat Fatkhullin :
컴파일 단계에 포함된 개체에 대해 부분적으로 정확하고 명명된 개체로 코드에 들어가지 않습니다.

사실 EX 파일 내부에는 64자의 명명된 리소스에 대한 물리적 제한이 있습니다.

제품 설명 에 공간이 거의 없습니다.

3600자는 크고 심각한 프로그램의 경우 매우 작습니다.

많은 분들이 공감하실 거라 생각합니다.

프로그램 설명에는 최소 5,000 - 10,000자가 필요합니다. 글쎄, 또는 프로그램 설정의 이름이있는 마지막 탭에서

중재자는 항상 물을 제거하도록 요청할 수 있습니다.

지금은 프로그램에 대한 설명을 작성하고 있으며 3600자를 모두 사용하여 설정을 설명할 뿐이고 가능성의 절반도 설명하지 않았습니다...