エラー、バグ、質問 - ページ 1003 1...99699799899910001001100210031004100510061007100810091010...3185 新しいコメント sion 2013.06.17 04:14 #10021 stringo:ts==true と ts!=NULL は全く別の表現です。さらにts==true と ts!=false も異なる表現です。どう違うかわかりますか?シンタックスだけでなく、セマンティクスも。 しかし、質問のポイントは、tsが配列であることです。また、このif(ts)がコンパイルできて、上のものができないのはなぜでしょうか。 Slava 2013.06.17 04:35 #10022 sion: 質問のポイントは、tsが配列であることのみです。また、このif(ts)がコンパイルできて、上記のものができないのはなぜでしょうか。if(ts)という式は、配列オブジェクトtsが実際に存在することを意味します。私は特にセマンティクスを持ち出した。この場合、コンパイルを禁止するのか、それとも警告で十分なのか?(ちなみに、警告はあるはずです。警告がない場合は、私たちのせいで、何かが壊れている) sion 2013.06.17 04:44 #10023 トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム バグ、バグ、質問 ストリングス 2013.06.17 06:35 if(ts)式は、ts配列オブジェクトが実際に存在することを意味する。私は特にセマンティクスについて言及しました。この場合、コンパイルを禁止するのか、それとも警告で十分なのか?(ちなみに、注意書きがあるはずです。警告がない場合は、私たちの責任、何かが壊れている)int ts[20]; void OnInit(){ ts[0]=0;ts[1]=1; if(ts)Print("ts[0]=0"); ts[0]=1; if(ts)Print("ts[0]=1");} void OnTick(){}2013.06.17 08:41:31 test_forum (EURUSD.e,M15) ts[0]=1むしろ配列の最初のセルで動作しているように見えますね。 A100 2013.06.17 06:13 #10024 #import "Test.ex5" void A(); #import "5Test.ex5" void A(); #import "Test5.ex5" void A(); #import void B() { Test::A(); } //нормально void C() { Test5::A(); } //нормально void D() { 5 Test::A(); } //ошибка компиляции ServiceDeskは、識別子が数字で始まることができないことに言及し、このエラーを認めませんでした。 しかし、5Testは識別子ではなく、ファイル名です。また、ファイル名は数字から始めることができ、#import .ex5のファイル名には何の制限も課せられていない Slava 2013.06.17 07:10 #10025 A100:ServiceDeskは、識別子が数字で始まることができないことに言及し、このエラーを認めませんでした。しかし、5Testは識別子ではなく、ファイル名です。また、ファイル名は数字から始めることができ、#import .ex5のファイル名には何の制限も課されなかった5Test::A は識別子です。そして、5Testは、この名前がimport 文の中で引用符で囲まれていれば、ファイル名として認識されます(ちなみに、そこには「5Test.ex5」とも書かれていますね)。 A100 2013.06.17 07:43 #10026 このため、C/C++コンパイラは、ファイル/モジュールの関数名の内部表現にアンダースコア(_)を自動的に追加し、終了名「_5TestA」が数字から始まらないようにし、互換性を確保しているのです Slava 2013.06.17 07:52 #10027 A100: そのため、C/C++コンパイラは、ファイル/モジュールの関数名の内部表現にアンダースコア文字(_)を自動的に追加し、結果として「_5TestA」という名前が数字から始まらないようにし、互換性を確保しているのです結果的に、そうなった。受け入れるしかないのです。これは編集するには危険な場所です。コンパイラの動作が大きく変わってしまい、誰も幸せにならない可能性があります。 A100 2013.06.17 08:47 #10028 stringo: これは編集するには危険な場所です。コンパイラの動作が大きく変わってしまい、誰も幸せにならない可能性があります。 私もそう思います。 この例をご覧ください。#define aX( X ) (X) void K() { int aX = 10; Print( aX( 5 ) ); Print( aX ); } // ошибка компиляции C/C++コンパイラは、aX変数とaX( X ) パラメトリックマクロを区別するのに十分な頭脳を持っています。 パラメトリックマクロはインライン関数がない場合の唯一の選択肢で、長いコードでは名前が重なることがよくある Slava 2013.06.17 08:57 #10029 A100: 同意見です。 この例をご覧ください。 同じような状況のC/C++コンパイラは、変数aXとパラメトリックマクロaX( X )を区別するウィットを持っています。 セラピストに診てもらう!?(サービスデスクに) Nikolai Karetnikov 2013.06.17 15:17 #10030 Rosh:もちろん、先日も事例を公開したばかりです。デモインジケータSetIntegerDemo_IndicatorSetDouble(デモインディケーターセットダブル デモインディケーターセット文字列 ありがとうございました。皆さんの協力で理解することができました。 1...99699799899910001001100210031004100510061007100810091010...3185 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
ts==true と ts!=NULL は全く別の表現です。
さらに
ts==true と ts!=false も異なる表現です。
どう違うかわかりますか?シンタックスだけでなく、セマンティクスも。
質問のポイントは、tsが配列であることのみです。また、このif(ts)がコンパイルできて、上記のものができないのはなぜでしょうか。
if(ts)という式は、配列オブジェクトtsが実際に存在することを意味します。私は特にセマンティクスを持ち出した。
この場合、コンパイルを禁止するのか、それとも警告で十分なのか?(ちなみに、警告はあるはずです。警告がない場合は、私たちのせいで、何かが壊れている)
トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム
バグ、バグ、質問
ストリングス 2013.06.17 06:35
if(ts)式は、ts配列オブジェクトが実際に存在することを意味する。私は特にセマンティクスについて言及しました。
この場合、コンパイルを禁止するのか、それとも警告で十分なのか?(ちなみに、注意書きがあるはずです。警告がない場合は、私たちの責任、何かが壊れている)
void OnInit()
{
ts[0]=0;ts[1]=1;
if(ts)Print("ts[0]=0");
ts[0]=1;
if(ts)Print("ts[0]=1");
}
void OnTick()
{
}
ServiceDeskは、識別子が数字で始まることができないことに言及し、このエラーを認めませんでした。
しかし、5Testは識別子ではなく、ファイル名です。また、ファイル名は数字から始めることができ、#import .ex5のファイル名には何の制限も課せられていない
ServiceDeskは、識別子が数字で始まることができないことに言及し、このエラーを認めませんでした。
しかし、5Testは識別子ではなく、ファイル名です。また、ファイル名は数字から始めることができ、#import .ex5のファイル名には何の制限も課されなかった
5Test::A は識別子です。
そして、5Testは、この名前がimport 文の中で引用符で囲まれていれば、ファイル名として認識されます(ちなみに、そこには「5Test.ex5」とも書かれていますね)。
そのため、C/C++コンパイラは、ファイル/モジュールの関数名の内部表現にアンダースコア文字(_)を自動的に追加し、結果として「_5TestA」という名前が数字から始まらないようにし、互換性を確保しているのです
結果的に、そうなった。受け入れるしかないのです。
これは編集するには危険な場所です。コンパイラの動作が大きく変わってしまい、誰も幸せにならない可能性があります。
これは編集するには危険な場所です。コンパイラの動作が大きく変わってしまい、誰も幸せにならない可能性があります。
私もそう思います。
この例をご覧ください。
C/C++コンパイラは、aX変数とaX( X ) パラメトリックマクロを区別するのに十分な頭脳を持っています。
パラメトリックマクロはインライン関数がない場合の唯一の選択肢で、長いコードでは名前が重なることがよくある
同意見です。
この例をご覧ください。
同じような状況のC/C++コンパイラは、変数aXとパラメトリックマクロaX( X )を区別するウィットを持っています。もちろん、先日も事例を公開したばかりです。
ありがとうございました。皆さんの協力で理解することができました。