c语言中extern的用法
时间: 2024-06-17 14:07:06 浏览: 23
在C语言中,extern关键字主要有两个用法:
1.在函数或变量的声明前加上extern关键字,表示该函数或变量是在其他文件中定义的,告诉编译器在链接时要在其他文件中寻找该函数或变量的定义。
2.在函数或变量的定义前加上extern关键字,表示该函数或变量是在其他文件中声明的,告诉编译器该函数或变量的定义在其他文件中,避免重复定义。
举个例子,如果在一个文件中定义了一个全局变量,而在另一个文件中需要使用该变量,就需要在使用该变量的文件中声明该变量为extern类型,以便编译器在链接时能够找到该变量的定义。
另外,使用extern关键字来引用函数比包含头文件要简洁,可以加速程序的编译过程,节省时间。但是,在大型C程序中,使用头文件来引用函数更为常见,因为头文件可以提供更多的信息,比如函数的参数类型和返回值类型等。
相关问题
c语言中 extern 的使用方法3
在C语言中,`extern`关键字用于声明一个全局变量或者函数的声明,表示该变量或函数是在其他文件中定义的。`extern`的使用方法有以下三种情况:
1. 外部全局变量的声明:在一个源文件中使用`extern`关键字来声明一个全局变量,表示该变量是在其他文件中定义的。例如:
```c
// 文件1.c
extern int global_var; // 声明外部全局变量
// 文件2.c
int global_var = 10; // 定义外部全局变量
```
2. 外部函数的声明:在一个源文件中使用`extern`关键字来声明一个函数,表示该函数是在其他文件中定义的。例如:
```c
// 文件1.c
extern void function(); // 声明外部函数
// 文件2.c
void function() {
// 函数定义
}
```
3. 引用外部库函数:使用`extern`关键字可以引用外部库函数,这些函数通常包含在系统库或者第三方库中。例如:
```c
extern int printf(const char *format, ...); // 引用标准库函数printf
```
通过使用`extern`关键字,可以在当前文件中引用其他文件中定义的全局变量和函数,从而实现模块化编程和代码复用。
c语言中extern定义的具体用法
extern在C语言中用于声明一个全局变量或函数的外部链接性,表示该变量或函数在其他文件中定义。具体用法如下:
1. 外部变量声明:当在一个文件中使用其他文件中定义的全局变量时,需要在当前文件中使用extern进行声明。例如,如果有一个全局变量在文件1.c中定义,可以在文件2.c中使用extern进行声明,并且可以直接访问该变量。
文件1.c:
```c
int globalVar = 10;
```
文件2.c:
```c
extern int globalVar;
int main() {
printf("%d\n", globalVar); // 输出10
return 0;
}
```
2. 外部函数声明:当在一个文件中调用其他文件中定义的函数时,需要在当前文件中使用extern进行声明。例如,如果有一个函数在文件1.c中定义,可以在文件2.c中使用extern进行声明,并且可以直接调用该函数。
文件1.c:
```c
void func() {
printf("Hello, World!\n");
}
```
文件2.c:
```c
extern void func();
int main() {
func(); // 输出 Hello, World!
return 0;
}
```
总之,extern的作用是告诉编译器某个变量或函数的定义在其他文件中,以便在当前文件中使用。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)