c语言中 extern 的使用方法3
时间: 2024-04-24 20:23:06 浏览: 113
在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使用
在C语言中,extern关键字用于声明一个变量或函数是在其他文件或模块中定义的。它的作用是告诉编译器该变量或函数在其他文件中定义,编译器在编译时不会对其进行处理,而是在链接时将其与其他文件中的定义进行链接。
下面是两个使用extern关键字的例子:
1. 声明外部函数
假设我们有两个文件,一个是main.c,另一个是func.c,func.c中定义了一个函数show(),我们需要在main.c中调用该函数,就需要使用extern关键字进行声明。
```c
// func.c代码
#include <stdio.h>
void show() {
printf("hello world");
}
// main.c代码
#include <stdio.h>
extern void show(); // 声明外部函数show()
int main() {
show(); // 调用外部函数show()
return 0;
}
```
2. 声明外部变量
假设我们有两个文件,一个是main.c,另一个是var.c,var.c中定义了一个全局变量g_val,我们需要在main.c中使用该变量,就需要使用extern关键字进行声明。
```c
// var.c代码
int g_val = 10;
// main.c代码
#include <stdio.h>
extern int g_val; // 声明外部变量g_val
int main() {
printf("%d", g_val); // 输出外部变量g_val的值
return 0;
}
```
c语言中extern
在C语言中,`extern`是一个关键字,用于声明变量或者函数的存储位置并不在当前作用域内。当你在一个文件(源文件)中声明了一个变量或函数为`extern`,而在另一个文件中定义了它,这就实现了数据的外部链接。使用`extern`有以下几个关键点:
1. 声明(declaration):在需要访问这个外部变量或函数的地方使用`extern`关键字,告诉编译器有一个这样的实体,但具体的实现(定义)还未给出。
2. 定义(definition):在某个位置(通常是在包含该声明的文件或其他相关的头文件中),提供变量或函数的实际内存分配或函数体。
例如:
```c
// 文件a.c
extern int global_var;
void func(void);
// 文件b.c
int global_var = 0; // 定义
void func() {
// 函数体...
}
// 包含a.c并在main中使用的c.h
extern void func();
```
这里,`global_var`在`a.c`中声明,在`b.c`中定义,通过`#include "c.h"`在`main.c`等其他文件中使用。
阅读全文
相关推荐
![docx](https://img-home.csdnimg.cn/images/20241231044901.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![doc](https://img-home.csdnimg.cn/images/20241231044833.png)
![text/plain](https://img-home.csdnimg.cn/images/20250102104920.png)
![doc](https://img-home.csdnimg.cn/images/20241231044833.png)
![-](https://img-home.csdnimg.cn/images/20241231044937.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)