extern的一个小问题
写了一段代码
test.c
#include<stdio.h>
int main()
{
extern char filename[]="file";
char filename[]="file";
printf("%s\n",filename);
return 0;
}
以上的代码编译时会error,表明filename重复定义了
但是如果把代码改称下面的:
test.c
#include<stdio.h>
extern char filename[]="file";
char filename[]="file";
int main()
{
printf("%s\n",filename);
return 0;
}
程序可以正常编译和执行
不太明白原因,请大家解释一下
ps:我在debain下gcc编译