我尝试了以下代码并收到错误。
int main()
{
//this will cause redefinition error
extern int x;
int x=2;
}
我见过关于extern的一些答案,比如
Defining extern variable in main() vs. globally
并得到了一个概念,但我仍然想知道编译器在这种情况下做了什么。在某些功能中可以使用extern(合法)吗?
更新
更具体地说,由于extern int x
只是一个声明,为什么我不能定义int x?编译器是否将extern int x
作为定义?
答案 0 :(得分:0)
当然可以使用它,不要在函数内定义另一个x
:
int main()
{
extern int x;
x=2;
}
答案 1 :(得分:0)
但我仍然想知道编译器在这种情况下做了什么。在某些功能中可以使用extern(合法)吗?
可以,但您不能像在代码中那样重新声明变量。所以这是一个有效的例子:
int main()
{
//this will cause redefinition error
extern int x;
x=2;
}
int x;
答案 2 :(得分:0)