テンプレート・パラメータ = void* のコンパイラ・バグ - ページ 12

 
fxsaber:

デベロッパー例えばOrderSendがそうであるように。

以下はその例です。https://www.mql5.com/ru/forum/295485/page11#comment_9959761

同じ質問に答えるのに飽きて、ついに警告を発するかと思いきや、そうではなかった

つまり、MQLはトレーダー向けではなく、プログラマー向けなのです

Баг компилятора при параметре шаблона = void*
Баг компилятора при параметре шаблона = void*
  • 2018.12.20
  • www.mql5.com
Ошибка компилятора. Билд 1961, 64 бит...
 
A100:

数値に基づく警告を無効にすれば十分です(MetaEditorからは見えませんが、ちゃんとあります)、これはコマンドコンパイラで行います

どうすればいいか教えてください。
 
Alexey Navoykov:
どのように行われるのか教えてください。

コンパイル結果はファイルに出力され、そこから既知の警告番号のない行を抽出する(警告という単語の後に数字が書かれている)

 
A100:

コンパイルの結果はファイルに出力され、そこからあらかじめ設定された警告番号のない行を抽出します(警告という単語の後に数字が付きます)。

では、これらの警告をMEで表示させないようにするにはどうすればよいのでしょうか? これらの数字をどこに表示させればよいのでしょうか?
 
Alexey Navoykov:
では、これらの警告をMEで表示させないようにするにはどうすればよいのでしょうか? これらの数字をどこに表示させればよいのでしょうか?

コマンドラインでコンパイルすると、すべてのメッセージもコマンドラインで表示されます。MetaEditor IDEに添付することはできません。これはいわば最終的なコンパイルで、重要な警告がないかどうかをチェックするものです。もうIDEで警告を見ることもない。

 
A100:

つまり、MQLはトレーダー向けではなく、プログラマー向けなのです

プログラマーではないので、MQLを使っています。プログラマーについてのマントラを終わらせる。一般のユーザーや、おそらくフリーランスの方よりはMQLを使いこなしているつもりです。

だから、ほとんどのユーザーが抱えている問題を、合理的に理解することができるのです。

 
A100:

コマンドラインでコンパイルすると、すべてのメッセージもコマンドラインに出力されるんだ。MetaEditor IDEに添付することはできません。これは最終的なコンパイルです - 重要な警告をチェックしてください

まあ、面白くはないんですけどね...。ところで、なぜコマンドラインでコンパイルするのですか?
 
Alexey Navoykov:
あ、それじゃ面白くないか...。ところで、なぜコマンドラインでコンパイルするのですか?

新しいビルドがリリースされ、すべての、または特定のファイルだけを再コンパイルする必要がある場合、リストを設定すると、そのリストだけがコンパイルされます。

それとも、別のビルドで再コンパイルする必要があるのでしょうか。ビルド番号とリストを設定すれば、コマンドファイルがすべてやってくれます。

 
A100:

しかも、8バイトのうち4バイトしか取れないような、そんな値に何の意味があるのでしょう。ポインタの値をulongに変換することを開発者が明示的に禁止していることを考えると(以前はできたし、当時はハイビットが0でなかったと信じている)、ポインタの値をulongに変換することはできません。

この数値は、ポインタの配列のポインタインデックスが、ポインタに厳密に連続して数値を割り当て、ある範囲の数値が解放されると、最後に解放された数値から最初の数値まで逆順に再利用する場合の動作と全く同じであることが実験的に示されている。もし誰かがこのディスクリプタのシステムを自分のアーキテクチャで複製したいと思ったなら、例えばポインタ型をサイズintの構造体に置き換え、理解できる振る舞い(破壊されたオブジェクトの インライン型としてtrueを返す、この振る舞いはポインタによる多くの有用な論理演算子のオーバーロードを禁止しているが、これは完全に面食らう)と単純型の利点すべてを維持しつつ、オブジェクトとポインタがカウンタによって人口を厳密に制御し、オブジェクト自体からこの数を取得できることはかなりの量のパを節約するでしょう

そして、より日常的なタスクといえば、この数値はシステムで作成されたオブジェクトの数を示し、ダイナミックリストをベースとしたアーキテクチャのデバッグに役立ちます。当然のことながら、入手禁止を「ごまかす」方法を考え出したのは私が初めてではないし、4だけだがもっと早い方法を教えてもらったこともある。
 
A100:

例えば、新しいビルドがリリースされ、全部または特定のファイルだけを再コンパイルする必要があるとします。

なるほど、でもこれは特殊なケースですね。やはり、コーディングやコンパイルはIDEで行うことが多いので、そこで不要な警告を無効にしておくと非常に便利です。

個人的には、そこに不要なものをたくさん見つけることができます。例えば、文字列への暗黙の変換に関する警告があります。99%の場合、文字列は画面に文字を表示したり、ファイルに書き込んだりするためだけに使われます。

あるいは、関数の戻り値の型がboolで、0や1を返したとすると、コンパイラも「この型はbooleanではない」と文句を言う。 VSにはそれがないのだ。これらの定数は、boolに対して許容されるものである。例えば、return falseよりも return 0と 書いた方が、視覚的に認識しやすいので便利なんです。

だから、私のログはこの2つの警告だけでほとんど埋まってしまっている。処分したい )。

このままでは、コンパイルが終わった後、最初のエラーまでログを自動スクロールするようにしました。 これがないと、手動でリストをスクロールして(しかもかなり大きい)エラーメッセージを 探さなければなりません。なんて面倒なんだ。