extern 如何用在不同文件
时间: 2024-05-08 12:21:45 浏览: 35
关键字 extern 可以用于在不同的文件中引用同一个全局变量或函数。在声明变量或函数时,使用 extern 关键字来告诉编译器它们是在其他文件中定义的。这样编译器就不会在当前文件中为它们分配内存或生成代码。
例如,在文件 a.c 中定义了一个全局变量 num:
```c
int num = 10;
```
在文件 b.c 中,如果想要使用这个变量,可以这样声明:
```c
extern int num;
```
这样编译器就知道 num 是在其他文件中定义的,并且会在链接时把它们关联起来。
同样的,如果在文件 a.c 中定义了一个函数 sum:
```c
int sum(int a, int b) {
return a + b;
}
```
在文件 b.c 中,如果想要调用该函数,可以这样声明:
```c
extern int sum(int a, int b);
```
这样编译器就知道 sum 是在其他文件中定义的,并且会在链接时把它们关联起来。
相关问题
extern 是放在自己文件中还是其他文件
"extern"关键字可以放在自己文件中,也可以放在其他文件中。
当在自己的文件中使用"extern"关键字时,它表示该变量或函数是在其他文件中定义的,这样可以让编译器知道该变量或函数的存在,并可以正确地链接它们。
当在其他文件中使用"extern"关键字时,它表示该变量或函数是在另外的文件中定义的,这样可以在当前文件中使用该变量或函数,而不需要再次定义。
extern int 在.h文件中声明了在.c文件中怎么用
在C语言中,当你想在一个`.c`源文件中引用一个在`.h`头文件中声明的全局变量(包括静态全局变量),你需要使用`extern`关键字。`.h`文件中的声明通常是这样的:
```c
// my_header.h
extern int global_variable;
```
然后,在`.c`文件中,如果这个变量还没有被初始化,通常会像这样声明并分配内存:
```c
// my_file.c
#include "my_header.h"
int global_variable; // 如果是在这里首次声明并初始化
int main() {
// 现在可以直接使用global_variable,但实际数值未定,可能需要在某个地方初始化
global_variable = some_initial_value;
return 0;
}
```
如果你在`.c`文件中已经对这个变量进行了定义,那么在`.h`文件中就不需要再声明了,但在头文件中保留`extern`声明有助于保持接口的一致性:
```c
// my_file.c
#include "my_header.h"
int global_variable = some_initial_value; // 实际的变量定义
int main() {
// 直接使用
return 0;
}
```
记住,每次修改`global_variable`的值都会影响所有链接到该文件的其他部分。因此,外部链接的`extern int`应尽可能地减少,以防数据不一致。
阅读全文