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

 
stringo:

ts==true と ts!=NULL は全く別の表現です。

さらに

ts==true と ts!=false も異なる表現です。

どう違うかわかりますか?シンタックスだけでなく、セマンティクスも。

しかし、質問のポイントは、tsが配列であることです。また、このif(ts)がコンパイルできて、上のものができないのはなぜでしょうか。
 
sion:
質問のポイントは、tsが配列であることのみです。また、このif(ts)がコンパイルできて、上記のものができないのはなぜでしょうか。

if(ts)という式は、配列オブジェクトtsが実際に存在することを意味します。私は特にセマンティクスを持ち出した。

この場合、コンパイルを禁止するのか、それとも警告で十分なのか?(ちなみに、警告はあるはずです。警告がない場合は、私たちのせいで、何かが壊れている)

 

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

バグ、バグ、質問

ストリングス 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むしろ
配列の最初のセルで動作しているように見えますね。
 
#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のファイル名には何の制限も課せられていない

 
A100:

ServiceDeskは、識別子が数字で始まることができないことに言及し、このエラーを認めませんでした。

しかし、5Testは識別子ではなく、ファイル名です。また、ファイル名は数字から始めることができ、#import .ex5のファイル名には何の制限も課されなかった

5Test::A は識別子です。

そして、5Testは、この名前がimport 文の中で引用符で囲まれていれば、ファイル名として認識されます(ちなみに、そこには「5Test.ex5」とも書かれていますね)。

 
このため、C/C++コンパイラは、ファイル/モジュールの関数名の内部表現にアンダースコア(_)を自動的に追加し、終了名「_5TestA」が数字から始まらないようにし、互換性を確保しているのです
 
A100:
そのため、C/C++コンパイラは、ファイル/モジュールの関数名の内部表現にアンダースコア文字(_)を自動的に追加し、結果として「_5TestA」という名前が数字から始まらないようにし、互換性を確保しているのです

結果的に、そうなった。受け入れるしかないのです。

これは編集するには危険な場所です。コンパイラの動作が大きく変わってしまい、誰も幸せにならない可能性があります。

 
stringo:

これは編集するには危険な場所です。コンパイラの動作が大きく変わってしまい、誰も幸せにならない可能性があります。

私もそう思います。

この例をご覧ください。

#define  aX( X ) (X)
void K()
{
        int aX = 10;
        Print( aX( 5 ) );
        Print( aX ); 
}
// ошибка компиляции

C/C++コンパイラは、aX変数とaX( X ) パラメトリックマクロを区別するのに十分な頭脳を持っています。

パラメトリックマクロはインライン関数がない場合の唯一の選択肢で、長いコードでは名前が重なることがよくある

 
A100:

同意見です。

この例をご覧ください。

同じような状況のC/C++コンパイラは、変数aXとパラメトリックマクロaX( X )を区別するウィットを持っています。
セラピストに診てもらう!?(サービスデスクに)
 

ありがとうございました。皆さんの協力で理解することができました。