エラー、バグ、質問 - ページ 2163

 
Комбинатор:


MQLコンパイラはC++に匹敵するコードを生成すると言っておきながら、MQLの配列はまったく高速でないことが判明するなど、一般ユーザーから見ると奇妙に映るのです。

マネージド/マネージド言語とは、明らかにアレイを厳密に制御しなければならないことを意味します。これなくして、言語の安全性は確保できない。

静的配列の 場合、制御はより単純で、コードオプティマイザの段階で部分的に簡略化することができる。ダイナミックアレイの場合、より多くの制御が必要であり、単純化することは困難です。

コードはC++の品質レベルで生成されますが、マネージドなものには確かにオーバーヘッドがあります。数学、ループ、その他はすべてC++レベルです。

 
Комбинатор:

配列のインデックスは、せいぜいアセンブラの直接コマンド1つ分にしかなりません。

マネージド言語では、定数 インデックスを持つ静的 配列のみ。つまり、オプティマイザが境界やバッファの有無を確認する必要がないと100%確信している場合です。

条件に違反した場合、buffer and bounds[s]チェックが表示されます。

これは、プログラミングをする際の基本的な知識です。

 
Vladimir Pastushak:
オーバーロードされた関数がenumToStringを持つ場合、それを整数値で呼び出すと問題が発生する...

私が注目しているのは、このhttps://www.mql5.com/ru/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

限られた時間の中で、なぜプロジェクトが必要なのでしょうか?

プロジェクトはプロジェクトです!1000枚の画像、サウンド、ヘルプファイルがあるかもしれないのに、すべてを1つのフォルダに入れなければならないのですか?

私は、ディレクトリ内の混乱のファンではない、品質の多くはあなたの頭の中だけでなく、どこにでも順序であるべきである書くために...



 
A100:

私が注目していたのは、このhttps://www.mql5.com/ru/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コプロセッサがほとんどアイドル状態で、ほとんど整数を使用しているという事実で説明しました。 私の場合、FPUでSQRTが実行され、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

限られた時間の中で、なぜプロジェクトが必要なのでしょうか?

プロジェクトはプロジェクトです!1000枚の画像、サウンド、ヘルプファイルがあるかもしれないのに、すべてを1つのフォルダに入れなければならないのですか?

私は、ディレクトリ内の混乱のファンではない、品質の多くはあなたの頭の中だけでなく、どこにでも順序であるべきである書くために...

コンパイル時に含まれ、名前付きオブジェクトとしてコードに入らないオブジェクトについては、部分的に修正します。

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文字は、大規模で本格的なプログラムには少なすぎる。

多くの人が納得してくれると思います。

プログラムを記述するためには、5000〜10000文字以上の文字数が必要です。せめてプログラム設定名のタブだけでも

司会者はいつでも水の除去を依頼することができます。

今、プログラムの説明文を書いているのですが、3600文字全部を設定の説明だけに使ってしまい、機能の半分も説明できていません......。
理由: