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

它之所以有效,是因为我的代码中的定义本质上是暂定的。因此,它们最初被视为声明,并且在找不到任何其他定义实例时,它们被组合成一个定义。

于 2013-06-09T07:51:48.687 回答