定义在所有函数之外的变量。
前面加extern时,是声明,意味引用其他文件中定义的外部变量。例如
extern int g_i;
int main(int argc, char **argv) {
printf("%d\n", g_i);
return 0;
}
编译错误:
$ gcc main.c
/tmp/ccSB0l0D.o: In function `main':
main.c:(.text+0x8f): undefined reference to `g_i'
collect2: ld returned 1 exit status
前面不加extern,是定义,可以在本文件中定义点到文件尾直接引用。
int g_i;
int main(int argc, char **argv) {
printf("%d\n", g_i);
return 0;
}
编译不会有问题。
关键的区别在于有没有extern,而不在于有没有赋初始值。
另外在函数中也可以声明一个变量为外部变量:
int g_i;
int main(int argc, char **argv) {
extern int g_i;
printf("%d\n", g_i);
return 0;
}
程序编译和运行都没有错,但extern int g_i;是可有可无了。
阅读(1275) | 评论(0) | 转发(0) |