エラー、バグ、質問 - ページ 312 1...305306307308309310311312313314315316317318319...3185 新しいコメント Rashid Umarov 2011.02.22 10:06 #3111 Academic:なぜなら、ObjectGetDouble 関数は 参照を渡し、if 文は両方の呼び出しが返す真偽をチェックし、したがって両方の関数が真を返す場合にのみこれらの変数が処理され、つまり両方の変数が正しい値に設定されないことはありえないからです。 コンパイラは、ObjectGetDoubleの 呼び出しの結果として、これらの変数が必ず初期化されることを確認するために、それほど心を広げてはいないのです。代わりに、参照渡しされる入力パラメータの値が明示的に設定されるような独自の変数を書いてみてください。コンパイラは何と言うのだろう。 Academic 2011.02.22 10:11 #3112 Rosh: コンパイラは、ObjectGetDoubleの 呼び出しの結果として、これらの変数が必ずしも初期化されることを確認するために、十分に心を広げていない。代わりに、参照渡しされる入力パラメータの値が明示的に設定されるように、自分で書いてみてください。コンパイラは何と言うのだろう。 ラシード それは「意識」ではなく、「数学」なんです。 Slava 2011.02.22 10:19 #3113 Academic: ラシード それは「意識」ではなく、「数学」なんです。 1.論理 式の短縮評価」なんてのもあるんですね。 2.コンパイラは、参照渡しされた変数に値が入るかどうかを確実に知ることはできません。 3.警告とは、あくまでも問題の可能性に注意を促すためのものです。 Документация по MQL5: Основы языка / Типы данных / Целые типы / Тип bool www.mql5.com Основы языка / Типы данных / Целые типы / Тип bool - Документация по MQL5 Rashid Umarov 2011.02.22 10:28 #3114 Academic:ラシード それは「意識」ではなく、「数学」なんです。 では、そのような融合を定義してみましょう。bool AlwaysGood( double & param) { return true; } ここで、param変数が初期化される保証はあるのでしょうか? Academic 2011.02.22 10:35 #3115 Rosh:では、そのようなffrunctionを定義してみましょう。 param変数が初期化される保証はあるのでしょうか?結果 "param "を変更しない関数です。だから、ここでは警告を1000%出すべきだ :) ここでの標準的な解決方法は、値を変更できないコード実行ブランチがある場合、この関数は値を変更しないものとみなす、というものです。そして、警告を発生させます。 ラシッド、最近のC++やCコンパイラのどれかを使ってそのようなコードをコンパイルして欲しいのですか?どれも左利きの警告は出ないと思いますよ。また、そのようなものを検出することに「問題」があるとすれば、突然、そのような最適化が全くないことに非常に強い疑念を持ち始めることになります。それとも、あるのでしょうか? Slava 2011.02.22 10:49 #3116 Academic: ラシード 最近のC++やCコンパイラで同じようなコードをコンパイルしても、左利きの警告を出すものはないだろう。 何を言い争ってるんだw0は入れるな。 PS 必ずメッセージがあります(以下、数行かもしれませんが) Slava 2011.02.22 10:54 #3117 Academic: これは明らかに改善されていません。特に、そのようなものの検出に「問題」がある場合、そのような最適化が全く行われていないのではないかという大きな疑問が湧きます。それとも、あるのでしょうか?ObjectGetDouble 関数は、独立した(つまりライブラリの)実装を持つため、コンパイラの制御の及ばないものである Документация по MQL5: Графические объекты / ObjectGetDouble www.mql5.com Графические объекты / ObjectGetDouble - Документация по MQL5 Dmitriy Skub 2011.02.22 11:02 #3118 Academic: ObjectGetDoubleの ヘルプを見ると。関数の成功に応じて、true または false を返す。成功すれば、最後のパラメータで参照渡しされた先の変数に、プロパティの値が格納される。したがって、受信変数の 充填は、何らかのエラーが発生した場合、保証されないと結論づけられる。だから、コンパイラのメッセージ は有効なのです。IMHO Sergey Chalyshev 2011.02.22 11:10 #3119 最新のビルドでは、何かが狂っているようです。小さなEAをすること。int OnInit() { Print("Все нормально!"); return(0); }テスターを起動する。2011.02.22 11:54:21 Core 1 2011.02.07 00:00:00 Everything is OK!EAに変更を加える。int OnInit() { Print("Тестер, Аууу, ты где?"); return(0); }コンパイルしてテスターを走らせたら、反応した。2011.02.22 11:57:55 Core 1 2011.02.07 00:00:00 すべて正常です!端末を再起動するだけでいいのです。 Slava 2011.02.22 11:11 #3120 Serj_Che: 最新のビルドでは、何かが狂っているようです。 小さなEAをすること。 テスターを起動する。 2011.02.22 11:54:21 Core 1 2011.02.07 00:00:00 Everything is OK! EAに変更を加える。 コンパイルしてテスターを走らせたら、反応した。 2011.02.22 11:57:55 Core 1 2011.02.07 00:00:00 すべて正常です! 端末を再起動するだけでいいのです。 すみません。今日か明日には、この不幸なエラーのない新しいビルドがリリースされる予定です。 1...305306307308309310311312313314315316317318319...3185 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
なぜなら、ObjectGetDouble 関数は 参照を渡し、if 文は両方の呼び出しが返す真偽をチェックし、したがって両方の関数が真を返す場合にのみこれらの変数が処理され、つまり両方の変数が正しい値に設定されないことはありえないからです。
コンパイラは、ObjectGetDoubleの 呼び出しの結果として、これらの変数が必ずしも初期化されることを確認するために、十分に心を広げていない。代わりに、参照渡しされる入力パラメータの値が明示的に設定されるように、自分で書いてみてください。コンパイラは何と言うのだろう。
ラシード それは「意識」ではなく、「数学」なんです。
ラシード それは「意識」ではなく、「数学」なんです。
1.論理 式の短縮評価」なんてのもあるんですね。
2.コンパイラは、参照渡しされた変数に値が入るかどうかを確実に知ることはできません。
3.警告とは、あくまでも問題の可能性に注意を促すためのものです。
ラシード それは「意識」ではなく、「数学」なんです。
では、そのような融合を定義してみましょう。
ここで、param変数が初期化される保証はあるのでしょうか?では、そのようなffrunctionを定義してみましょう。
param変数が初期化される保証はあるのでしょうか?結果 "param "を変更しない関数です。だから、ここでは警告を1000%出すべきだ :)
ここでの標準的な解決方法は、値を変更できないコード実行ブランチがある場合、この関数は値を変更しないものとみなす、というものです。そして、警告を発生させます。
ラシッド、最近のC++やCコンパイラのどれかを使ってそのようなコードをコンパイルして欲しいのですか?どれも左利きの警告は出ないと思いますよ。
また、そのようなものを検出することに「問題」があるとすれば、突然、そのような最適化が全くないことに非常に強い疑念を持ち始めることになります。それとも、あるのでしょうか?
ラシード 最近のC++やCコンパイラで同じようなコードをコンパイルしても、左利きの警告を出すものはないだろう。
何を言い争ってるんだw0は入れるな。
PS 必ずメッセージがあります(以下、数行かもしれませんが)
これは明らかに改善されていません。特に、そのようなものの検出に「問題」がある場合、そのような最適化が全く行われていないのではないかという大きな疑問が湧きます。それとも、あるのでしょうか?
ObjectGetDoubleの ヘルプを見ると。
関数の成功に応じて、true または false を返す。成功すれば、最後のパラメータで参照渡しされた先の変数に、プロパティの値が格納される。
したがって、受信変数の 充填は、何らかのエラーが発生した場合、保証されないと結論づけられる。だから、コンパイラのメッセージ は有効なのです。
IMHO
最新のビルドでは、何かが狂っているようです。
小さなEAをすること。
テスターを起動する。
2011.02.22 11:54:21 Core 1 2011.02.07 00:00:00 Everything is OK!
EAに変更を加える。
コンパイルしてテスターを走らせたら、反応した。
2011.02.22 11:57:55 Core 1 2011.02.07 00:00:00 すべて正常です!
端末を再起動するだけでいいのです。
最新のビルドでは、何かが狂っているようです。
小さなEAをすること。
テスターを起動する。
2011.02.22 11:54:21 Core 1 2011.02.07 00:00:00 Everything is OK!
EAに変更を加える。
コンパイルしてテスターを走らせたら、反応した。
2011.02.22 11:57:55 Core 1 2011.02.07 00:00:00 すべて正常です!
端末を再起動するだけでいいのです。