在下面的程序,我认为extern int i;
将改变以下i
指外main
定义的i
:错误:的extern声明“我”如下声明没有联动
#include <stdio.h>
extern int i=1; // warning: 'i' initialized and declared 'extern'
int main()
{
int i=2;
printf("%d\n", i);
extern int i; // error: extern declaration of 'i' follows declaration with no linkage
printf("%d\n", i);
return 0;
}
的原因是什么错误:'i'的extern声明跟在没有链接的声明之后“,其中”没有链接的声明“是指int i=2;
?
之后,我删除main
int i=2
,
- 的错误消失,
- 警告 “警告: '我' 初始化,并宣布 '的extern'” 关于
extern int i=1;
也消失了。这是为什么?
谢谢你的解释!
'extern int i;'的错误:在同一范围内有重复的标识符。尝试'{extern int i; printf(“%d \ n”,i); }' – BLUEPIXY
replace extern int i = 1;用int i = 1; – Ihdina
在main()中已经有一个局部变量'i';你不能在全球范围内。局部变量隐藏全局变量。这不是C++,你需要范围解析操作员来帮助。影响全局变量是不好的做法(如果指定'-Wshadow',GCC会发出警告)。而想要在一个函数中访问这两者的做法更糟糕。 –