1、用于声明外部变量
extern 关键字通常用于声明一个在其他文件中定义的全局变量。如有多个源文件,其中一个源文件定义了变量,其他源文件可以使用 extern 来访问它。
1)file1.c - 定义全局变量
#include <stdio.h>
int globalVar = 10; // 定义全局变量
int main() {
printf("Global variable in file1.c: %d\n", globalVar); // 访问全局变量
return 0;
}2)file2.c - 声明外部变量并访问
#include <stdio.h>
extern int globalVar; // 声明在其他文件中定义的外部变量
void printGlobalVar() {
printf("Global variable in file2.c: %d\n", globalVar); // 访问外部变量
}
int main() {
printGlobalVar(); // 调用函数打印全局变量
return 0;
}在 file1.c 中,globalVar 被定义并初始化为 10。在 file2.c 中,通过 extern 声明 globalVar,告诉编译器该变量在其他地方已定义。
2、用于声明外部函数
extern 也可以用于声明在其他文件中定义的函数。这对于跨多个文件共享函数非常有用。
1)file1.c
#include <stdio.h>
void myFunction() {
printf("Hello from myFunction!\n");
}
2)file2.c
#include <stdio.h>
// 声明在其他文件中定义的外部函数
extern void myFunction();
int main() {
myFunction(); // 调用 myFunction,实际执行的是 file1.c 中定义的函数
return 0;
}3、extern 与 static 的区别
extern 用于声明外部的变量或函数,表示它们可以在程序的其他文件中使用。static 用于声明一个局部变量或函数,表示它们只能在当前文件或函数内访问,不能在外部文件中引用。
1)file1.c
#include <stdio.h>
static int staticVar = 5; // static 变量,仅在 file1.c 中可见
int globalVar = 10; // globalVar 可以在其他文件中访问
void printVariables() {
printf("staticVar = %d\n", staticVar);
printf("globalVar = %d\n", globalVar);
}2)file2.c
#include <stdio.h>
// 声明来自 file1.c 的 globalVar
extern int globalVar;
// 声明来自 file1.c 的函数
extern void printVariables();
int main() {
// 访问来自 file1.c 的 globalVar
printf("globalVar from file2.c = %d\n", globalVar);
// 调用来自 file1.c 的函数
printVariables();
return 0;
}