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

 
A100:

もし私が正しく述べていないのであれば、訂正してください。

不正確です。括弧を使うことで、間違いが起こりにくくなります。

警告とは、このように書くと比較的多くのコーダーが間違いを犯す、つまり結果が意図したものと違うというメッセージである。これは、ブラケットだけでなく、すべての警告に適用されます。

 
fxsaber:

間違っている。括弧を使うことで、間違いが少なく なります。

警告とは、このような書き方をすると、比較的多くのコーダーが間違いを犯しますよ、つまり、結果が意図したものと違いますよ、というメッセージです。これは、ブラケットだけでなく、すべての警告に適用されます。

これは概念ではなく、一般的な推論です。

この問題は実用的な性格のもので、抽象的な性格のものではなく、非常に具体的なものです。どこもかしこも?それとも選択的に?では、その選定は誰が決めるのでしょうか。fxsaberは? それを一義的に定式化できるのか?このコンセプトをコンパイラに実装できるように

私は、「なくても困らないところだけ」と表現 しました。

 
pavlick_:

ZS: でも、もし作るなら、標準のプラスライブラリとなるべく似せる(名前、動作など)ので、私には選択の余地はないですね。すでにすべてが書かれているのに、なぜ別の仕様書を作るのか?

そうすると、オブジェクト配列やポインタ配列は、mqlでは全く必要ないことになります。ダイナミックリストとfor eachループは、トレーディングにおける99%のタスクを最もコンパクトで便利な方法で解決することができます。別にリストクラスも必要ない。これらのプラスアルファの機能は、普段のここよりも大きなスケールで必要なものばかり...。

 
A100: 一義的に表現できるか?

コードを理解しやすくするところ

 
TheXpert:

コードを理解しやすくするところ

そのコンセプトをコンパイラに実装できるように。不要なブラケットを禁止する人はいない。質問は、不要な警告についてです

 
A100:

それは、抽象的なものではなく、「どこにブラケットが必要なのか」という具体的な問題なのです。どこもかしこも?それとも選択的に?では、その選定は誰が決めるのでしょうか。fxsaberは? それを明確に表現できますか?

問題は、MT4のコンパイラが正しいかどうかでした

トレーディング、自動売買システム、ストラテジーテストに関するフォーラム

MetaTrader 5 build 1930プラットフォームの新バージョン:MQL5におけるフローティング・チャート・ウィンドウと.Netライブラリ

fxsaber さん 2018.12.11 19:44

#property strict
   // from MT5: Canvas.mqh
   uint Pixel = (r<<16|g<<8|b<<0|255<<24) &0xffffffff; //check operator precedence for possible error; use parentheses to clarify precedence


この場合は右です。括弧はここでは必要ありませんが、エラーが発生する可能性があるため、望ましいです。コンパイラは、このような確率をもとに、何らかの警告を発する。そのために発明されたのです。

 
fxsaber:

この場合、彼の言うとおりです。

具体的な事例はこの段階では必要ありません(いくつ出してもかまいません)。必要なのは、コンパイラで実装可能な単一の コンセプト(括弧がない場合に警告を発するべき場合)である。

 
A100:

この段階では具体的な例は必要ありません(いくつ出してもかまいません)。必要なのは、コンパイラに実装できる概念である

すでにかなり実装されていますね。ただ、MT4の方がスマートであることが判明したのです。

トレーディング、自動売買システム、ストラテジーテストに関するフォーラム

MetaTrader 5 build 1930の新バージョン:MQL5におけるフローティングチャートウィンドウと.Netライブラリ

fxsaber さん 2018.12.11 20:22

これらは、決して冗長なメッセージではありません。常に優先順位があります。

bool a = r && g || b; // check operator precedence for possible error; use parentheses to clarify precedence

コンパイラはすでにファイブにもエラーの可能性があることを警告しています。

 
fxsaber:

すでにかなり実装されていますね。ただ、MT4の方がスマートであることが判明したのです。

この警告は、MQL5では優先順位が異なるため、このように表示されただけです。からではなく

つまり、「今までMQL4が違っていたところでは、警告が必要だろう」というコンセプト です。こうして、開発者はこれまでの失敗を修正した。其れっ切り

 
コンパイラが、不完全な数式を書いたときにExcelが行うように、自動的に括弧を「正しく」並べる機能を提供してくれれば、より便利なのだが。