extern C语言
时间: 2023-11-21 15:50:25 浏览: 32
extern 是 C 语言中的一个关键字,用于声明一个函数或变量是在其他文件中定义的。它可以用来在一个源文件中引用另一个源文件中定义的函数或变量。
当在一个源文件中使用 extern 关键字声明一个函数时,意味着该函数是在另一个源文件中定义的,编译器会在链接阶段将其与实际定义连接起来。
例如,在一个源文件 A.c 中使用 extern 声明一个函数 foo():
extern void foo(); // 函数 foo() 在其他地方定义
然后在另一个源文件 B.c 中定义该函数:
void foo() {
// 函数定义
}
这样,编译器会在链接阶段将 A.c 和 B.c 中的代码连接起来,使得 A.c 中对 foo() 函数的调用能正确执行。
相关问题
extern c语言举例
C语言中,auto和static关键字用于定义变量的存储类型。
auto: 默认存储类型,在函数体内定义的变量默认为auto。这种类型的变量存储在栈中,作用域仅限于所在函数。
static: 存储类型为静态,在整个程序运行期间都存在。这种类型的变量存储在静态存储区中,作用域仅限于所在文件。
extern: 存储类型为外部,用于在一个文件中声明另一个文件中已经定义过的变量或函数。extern变量或函数只是声明,而不是定义。
extern c语言中多个文件用法
在 C 语言中,可以通过 extern 关键字来声明一个全局变量或函数在另一个文件中定义,以便在当前文件中使用。
具体用法如下:
1. 在需要使用全局变量或函数的文件中,使用 extern 关键字声明该变量或函数:
```
extern int global_var; // 声明全局变量
extern void func(); // 声明函数
```
2. 在定义全局变量或函数的文件中,不需要使用 extern 关键字,直接定义即可:
```
int global_var = 0; // 定义全局变量
void func() { // 定义函数
// function body
}
```
3. 将上述两个文件编译为目标文件(例如 file1.o 和 file2.o),然后将它们链接起来生成可执行文件:
```
gcc -c file1.c -o file1.o
gcc -c file2.c -o file2.o
gcc file1.o file2.o -o program
```
4. 在程序中使用全局变量或函数:
```
#include <stdio.h>
extern int global_var;
extern void func();
int main() {
printf("global_var = %d\n", global_var);
func();
return 0;
}
```
注意,在使用 extern 声明全局变量时,只是告诉编译器该变量在别的文件中已经定义了,但是并没有分配空间。因此,在定义全局变量时,需要在其中一个文件中进行实际的分配空间操作,否则链接时会出错。例如:
```
// file1.c
#include <stdio.h>
int global_var; // 定义全局变量,并分配空间
int main() {
global_var = 42; // 修改全局变量的值
printf("global_var = %d\n", global_var);
return 0;
}
// file2.c
#include <stdio.h>
extern int global_var; // 声明全局变量
void func() { // 定义函数
printf("global_var = %d\n", global_var);
}
```