详细讲解一下C语言 extern的用法
时间: 2023-04-10 16:03:19 浏览: 90
C语言中,extern关键字用于声明一个变量或函数是在其他文件中定义的,而不是在当前文件中定义的。这样做可以使得多个文件共享同一个变量或函数,从而方便代码的管理和维护。
具体来说,当我们在一个文件中使用了extern关键字声明了一个变量或函数时,编译器会在编译时检查其他文件中是否已经定义了这个变量或函数。如果已经定义了,那么编译器就会将这个变量或函数的地址保存在当前文件中,以便在程序运行时能够正确地访问它。
举个例子,假设我们有两个文件a.c和b.c,其中a.c中定义了一个全局变量x,而b.c中需要使用这个变量。为了实现这个目的,我们可以在b.c中使用extern关键字声明这个变量,如下所示:
extern int x;
这样,编译器就会在编译b.c时检查a.c中是否已经定义了变量x,如果已经定义了,那么编译器就会将x的地址保存在b.c中,以便在程序运行时能够正确地访问它。
总之,extern关键字可以使得多个文件共享同一个变量或函数,从而方便代码的管理和维护。
相关问题
c语言extern用法
在C语言中,`extern`关键字用于声明一个全局变量或函数,表示该变量或函数在其他文件中定义。它告诉编译器该变量或函数的定义在其他地方,不需要在当前文件中进行定义。
使用`extern`关键字的一般语法如下:
```c
extern data_type variable_name;
extern return_type function_name(arguments);
```
对于全局变量,在一个源文件中使用`extern`关键字声明变量,表示该变量是在其他文件中定义的全局变量。这样,在当前文件中就可以使用该变量,而不需要重新定义它。例如:
```c
// File1.c
int globalVariable = 10;
// File2.c
extern int globalVariable; // 声明全局变量
int main() {
printf("%d\n", globalVariable); // 使用全局变量
return 0;
}
```
对于函数,在一个源文件中使用`extern`关键字声明函数,表示该函数是在其他文件中定义的函数。这样,在当前文件中就可以调用该函数,而不需要重新定义它。例如:
```c
// File1.c
#include <stdio.h>
void myFunction() {
printf("Hello, World!\n");
}
// File2.c
extern void myFunction(); // 声明函数
int main() {
myFunction(); // 调用函数
return 0;
}
```
通过使用`extern`关键字,可以将变量和函数的定义和声明分开,使得程序的结构更加清晰,并可以方便地在多个文件之间共享变量和函数。
c语言 extern用法
`extern`是C语言中的一个关键字,用于声明一个变量或函数是在其他文件中定义的。它的作用是告诉编译器这个变量或函数在其他地方定义,不需要在当前文件中再次定义。
具体用法如下:
1. 声明一个全局变量
如果想在一个文件中使用另一个文件中定义的全局变量,可以使用`extern`关键字来声明该变量。例如,在文件a.c中定义了一个全局变量`int num`,可以在文件b.c中使用该变量,只需要在b.c中声明一下该变量即可:
```c
// a.c
int num = 10;
// b.c
extern int num; // 声明num变量
int main() {
printf("%d\n", num); // 输出10
return 0;
}
```
2. 声明一个全局函数
如果想在一个文件中调用另一个文件中定义的函数,也可以使用`extern`关键字来声明该函数。例如,在文件a.c中定义了一个函数`void func()`,可以在文件b.c中调用该函数,只需要在b.c中声明一下该函数即可:
```c
// a.c
void func() {
printf("Hello, world!\n");
}
// b.c
extern void func(); // 声明func函数
int main() {
func(); // 调用func函数,输出Hello, world!
return 0;
}
```
需要注意的是,在声明一个全局变量或函数时,不能再次定义它,否则会导致编译错误。