乘法声明/全局变量的定义

时间:2013-06-09 06:59:17

标签: c global-variables terminology variable-declaration

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中会失败。

我是编程新手,所以请原谅任何错误。

2 个答案:

答案 0 :(得分:0)

这很有效,因为我的代码中的定义本质上是暂定的。因此,它们最初被视为声明,并且在未找到任何其他定义实例时,它们被合并为单个定义。

答案 1 :(得分:-1)

它有时取决于编译器版本..有些编译器会允许这样但有些则不会 例如,turbo C ++将允许这样的声明,但mingw(gcc / g ++)在这两种情况下都不允许这样做。

希望有所帮助