2
int x; //line 1
int x; //line 2
int main()
{
    return 0;
}

行 1 と行 2 の両方で、変数 x の宣言と定義を行っています。しかし、コードはリンカ エラーを出しません。なぜそうなのですか?

コンパイルは、両方の行で x を初期化した場合にのみ失敗します。

int x=3;
int x=3;
int main(){
return 0;
}

変数 x が複数定義されているため、コード 1 でコンパイルが失敗すると思いました。

プログラミング初心者ですので、間違い等ありましたらご容赦ください。

4

1 に答える 1

0

私のコードの定義は本質的に暫定的なものであるため、機能します。そのため、最初は宣言と見なされ、定義の他のインスタンスが見つからない場合、それらは 1 つの定義に結合されます。

于 2013-06-09T07:51:48.687 に答える