我将以下代码一起编译运行,命令为:gcc A.c B.c -o combined
程序A:
#include<stdio.h>
int a=1;
int b;
int main()
{
extern int a,b;
fun();
printf("%d %d\n",a,b);
}
程序 B:
int a;
int b=2;
int fun()
{
printf("%d %d\n",a,b);
return 0;
}
运行“combined”程序时,输出结果为:
1 2
1 2
现在,我有几个疑问:
为什么输出不是:
0 2
1 0
a和b不是被定义了两次吗?
请清晰地解释这些问题,我一直很难理解extern,并且这些疑问经常出现。
提前感谢。