C语言中extern的作用与用法
时间: 2023-05-17 11:07:48 浏览: 182
extern是C语言中的一个关键字,它的作用是用来声明一个全局变量或函数,但并不定义它们。这样在其他文件中就可以使用这个变量或函数,而不需要重新定义它们。extern的用法是在变量或函数的声明前加上extern关键字,例如:
extern int global_var; // 声明一个全局变量
extern void func(); // 声明一个函数
这样在其他文件中就可以使用global_var和func,而不需要重新定义它们。
相关问题
c语言中extern用法
### 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]. 同时也要注意避免循环依赖等问题的发生.
---
c语言中extern的用法
在C语言中,extern关键字主要有两个用法:
1.在函数或变量的声明前加上extern关键字,表示该函数或变量是在其他文件中定义的,告诉编译器在链接时要在其他文件中寻找该函数或变量的定义。
2.在函数或变量的定义前加上extern关键字,表示该函数或变量是在其他文件中声明的,告诉编译器该函数或变量的定义在其他文件中,避免重复定义。
举个例子,如果在一个文件中定义了一个全局变量,而在另一个文件中需要使用该变量,就需要在使用该变量的文件中声明该变量为extern类型,以便编译器在链接时能够找到该变量的定义。
另外,使用extern关键字来引用函数比包含头文件要简洁,可以加速程序的编译过程,节省时间。但是,在大型C程序中,使用头文件来引用函数更为常见,因为头文件可以提供更多的信息,比如函数的参数类型和返回值类型等。
阅读全文
相关推荐














