C语言中,extern的用法
时间: 2024-10-22 07:18:26 浏览: 95
在C语言中,`extern`是一个关键字,主要用于声明变量或函数的存在,但在当前的作用域内并未定义它们。当在某个文件中声明了一个`extern`变量或函数,而在另一个文件中定义了它,就可以实现数据在不同源文件之间的共享。
- **声明**:在函数外部或者包含头文件的地方,对全局变量或未定义的函数使用`extern`进行声明,表示这个变量或函数在其他地方已经被声明或者定义。
```c
extern int global_var;
extern void function_name();
```
- **定义**:通常在单个源文件中,或者在所有需要使用该变量或函数的地方,提供其具体的实现。
```c
// 在某个.c文件里
int global_var = 0; // 对全局变量的定义
// 或者,在单独的.c或.cpp文件里
void function_name() {
// 函数体...
}
```
- **链接**:在编译期间,所有的`extern`声明会保存起来,然后在链接阶段将所有相关的定义组合在一起。
`extern`常常配合`static`一起使用,其中`static extern`意味着只在本文件范围内可见,而不是在整个程序中。
相关问题
c语言中extern的用法
在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`关键字,可以在当前文件中引用其他文件中定义的全局变量和函数,从而实现模块化编程和代码复用。
阅读全文
相关推荐
![-](https://img-home.csdnimg.cn/images/20241231044937.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231044833.png)
![doc](https://img-home.csdnimg.cn/images/20241231044833.png)
![text/plain](https://img-home.csdnimg.cn/images/20250102104920.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![doc](https://img-home.csdnimg.cn/images/20241231044833.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.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://img-home.csdnimg.cn/images/20241231044833.png)