C中extern的实际用途是什么?在跨多个文件使用时,全局变量不会相同吗?
文件head.h
int i;
这包含在多个文件中,并按预期工作。那么外部人员的适当用途是什么?
答案 0 :(得分:3)
extern
声明一个全局变量(通常在头文件中)。它应该只在一个源文件中定义。否则,根据链接器的智能程度,最终可能会出现错误或同一变量的多个定义。但是,现代链接器可能会为您排序。
答案 1 :(得分:1)
您可以使用extern
访问不同文件中的变量...
e.g。看到这个:
file1.c中
// Integer with external binding
int global1 = 10;
// REFERENCE to an external defined variable defined in file2.c
extern int global2;
// Integer with internal binding (not accessible with extern from other files)
static int internal1 = 20;
void print1() {
printf("%d, %d, %d", global1, global2, internal);
}
file2.c中
// REFERENCE to an external defined variable defined in file1.c
extern int global1;
// Integer with external binding
int global2 = 20;
void print2() {
// you wont be able to reach internal1 here! Even with extern!
printf("%d, %d", global1, global2);
}
你看,external关键字告诉编译器全局变量存在,但在另一个文件中。您可以引用在其他地方声明的变量(例如,在外部库或其他目标文件中。它的链接器内容)。此外,它将大大提高您的源代码的可读性,并有助于避免同名变量!使用它的好习惯......
顺便说一下:全局变量是默认值extern
。添加static
会将它们更改为内部变量!