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中会失败。
我是编程新手,所以请原谅任何错误。
答案 0 :(得分:0)
这很有效,因为我的代码中的定义本质上是暂定的。因此,它们最初被视为声明,并且在未找到任何其他定义实例时,它们被合并为单个定义。
答案 1 :(得分:-1)
它有时取决于编译器版本..有些编译器会允许这样但有些则不会 例如,turbo C ++将允许这样的声明,但mingw(gcc / g ++)在这两种情况下都不允许这样做。
希望有所帮助