c语言中extern用法
时间: 2025-05-29 13:07:03 浏览: 26
### C语言中 `extern` 关键字的用法
#### 基本概念
在C语言中,`extern` 是一种存储类说明符,主要用于声明变量或函数是在其他文件中定义的。它的主要目的是实现跨源文件的数据共享和函数调用[^1]。
当在一个文件中定义了一个全局变量或者函数时,如果希望另一个文件能够访问这些资源,则可以在第二个文件中使用 `extern` 进行声明。这样编译器就知道该变量或函数并非在此文件中定义,而是存在于程序的其他地方。
#### 使用场景
以下是常见的两种使用场景:
1. **外部变量声明**
如果一个全局变量被定义在一个 `.c` 文件中,并且需要在另一个 `.c` 文件中使用它,那么可以通过 `extern` 来声明这个变量的存在。
2. **外部函数声明**
虽然对于函数来说,默认情况下它们具有外部链接性(即不需要显式地加上 `extern`),但在某些特定场合下仍然可以使用 `extern` 明确指出这是对外部函数的引用。
#### 示例代码
下面是一个完整的例子来展示如何正确运用 `extern`:
假设我们有两个文件:`file1.c` 和 `file2.c`
##### file1.c
```c
#include <stdio.h>
// 定义一个全局整型变量
int globalVar = 42;
// 定义并实现一个简单的打印函数
void printMessage() {
printf("This is from file1.\n");
}
```
##### file1.h
```c
#ifndef FILE1_H
#define FILE1_H
// 函数原型声明
void printMessage();
#endif // !FILE1_H
```
##### file2.c
```c
#include <stdio.h>
#include "file1.h"
// 对于globalVar, 我们需要用extern告诉编译器这是一个来自别的地方的变量.
extern int globalVar;
int main(void){
// 访问由file1.c定义的全局变量
printf("Value of global variable defined in another file: %d\n", globalVar);
// 调用由file1.c定义的函数
printMessage();
return 0;
}
```
在这个例子中,尽管我们在 `file2.c` 中并没有重新定义 `globalVar`, 只是简单地通过 `extern` 声明了一下它的存在位置,就成功实现了对其值的操作以及对 `printMessage()` 的正常调用[^3].
#### 高级特性与注意事项
需要注意的是,在实际开发过程中虽然可以直接利用默认规则让不同模块间相互协作完成任务;但是为了提高可读性和维护便利度还是推荐尽量采用头文件形式统一管理接口信息[^2]. 同时也要注意避免循环依赖等问题的发生.
---
阅读全文
相关推荐


















