学习目标
- 理解extern的作用
- 掌握extern的用法
学习内容
extern理解
extern是C语言中的一个关键字,用于说明一个全局变量或函数的定义不在本文件中,而在其他文件中,告诉编译器该变量或函数已经在别的文件中定义过了。
在C语言中,如果要在一个源文件中使用另一个源文件中定义的全局变量或函数,需要使用extern关键字声明一下该变量或函数,这样编译器才能知道该变量或函数已经在其他文件中定义过了。
extern变量
以下是extern关键字的用法和示例:
在一个源文件中定义全局变量,然后在另一个源文件中使用该变量:
int global_var = 10;
#include <stdio.h>
extern int global_var; // 声明全局变量
int main() {
printf("%d\n", global_var); // 使用全局变量
return 0;
}
extern函数
在一个源文件中定义函数,然后在另一个源文件中使用该函数:
int add(int a, int b) {
return a + b;
}
extern int add(int a, int b); // 声明函数
int main() {
int result = add(1, 2); // 使用函数
printf("%d\n", result);
return 0;
}
头文件中定义
需要注意的是,如果在一个源文件中定义了一个全局变量或函数,并且该变量或函数要在多个源文件中使用,那么需要将该变量或函数的定义放在一个头文件中,并在其他源文件中包含该头文件。
例如,将上面的global_var
和add
函数的定义放在一个头文件中:
extern int global_var;
extern int add(int a, int b);
然后在其他源文件中包含该头文件即可使用该变量和函数:
// myimpl.c
#include "myheader.h"
int global_var = 10;
int add(int a, int b) {
return a + b;
}
// test.c
#include <stdio.h>
#include "myheader.h"
int main() {
printf("%d\n", global_var);
int result = add(1, 2);
printf("%d\n", result);
return 0;
}