在头文件中用extern修饰函数的声明有什么用处?请说明并用代码举例
时间: 2024-03-05 15:50:34 浏览: 96
c代码-extern 修饰符用于当有两个或多个文件共享相同的全局变量或函数的时候
使用`extern`关键字修饰函数的声明,可以让多个源文件共享同一个函数定义,避免在每个源文件中都重复定义相同的函数,从而减小程序的代码冗余度。
具体来说,当一个源文件需要调用另一个源文件中定义的函数时,可以在调用函数的源文件中使用`extern`关键字声明该函数,告诉编译器该函数的定义在其他源文件中,编译器在链接时会将所有需要的函数定义链接在一起,生成可执行文件。
以下是一个简单的示例:
假设我们有两个源文件`main.c`和`func.c`,`func.c`中定义了一个函数`add`,在`main.c`中需要调用`add`函数,我们可以在`main.c`中使用`extern`关键字声明`add`函数,避免在`main.c`中重复定义`add`函数。
`func.c`的代码如下:
```c
// 定义函数add
int add(int a, int b) {
return a + b;
}
```
`main.c`的代码如下:
```c
#include <stdio.h>
// 使用extern声明函数add
extern int add(int a, int b);
int main() {
int result = add(1, 2);
printf("1 + 2 = %d\n", result);
return 0;
}
```
在编译时,我们需要将`main.c`和`func.c`一起编译:
```
gcc main.c func.c -o main
```
编译器会将`main.c`中使用`extern`声明的`add`函数与`func.c`中定义的`add`函数链接在一起,生成可执行文件`main`,运行该程序会输出`1 + 2 = 3`。
阅读全文