extern修饰全局
时间: 2023-12-25 11:27:39 浏览: 35
extern关键字用于声明一个全局变量,它告诉编译器这个变量在其他文件中定义,这样编译器就不会在当前文件中为这个变量分配内存。在使用extern修饰全局变量时,需要在.h文件中声明extern变量,然后在其他的.c或.cpp文件中使用该变量。这样可以扩大全局变量的作用域范围,使其在整个工程文件中都可以使用。需要注意的是,extern不可以修饰局部变量。
下面是一个使用extern修饰全局变量的例子:
在.h文件中声明extern变量:
```c
// global.h
#ifndef GLOBAL_H
#define GLOBAL_H
extern int g_global_var;
#endif
```
在.c文件中定义全局变量:
```c
// global.c
#include "global.h"
int g_global_var = 10;
```
在另一个.c文件中使用该全局变量:
```c
// main.c
#include <stdio.h>
#include "global.h"
int main() {
printf("g_global_var = %d\n", g_global_var);
return 0;
}
```
输出结果为:
```
g_global_var = 10
```
相关问题
extern修饰全局变量C语言
extern是C语言中用来声明全局变量或函数的关键字。它的作用是告诉编译器该变量或函数是在其他文件中定义的,而不是当前文件中定义的。
当我们在一个文件中使用extern修饰全局变量时,它表示该变量在其他文件中已经定义了。这样,在编译时,编译器会在其他文件中查找该变量的定义,并将其链接到当前文件中。
使用extern修饰全局变量的语法如下:
extern 数据类型 变量名;
例如,我们在文件A.c中定义了一个全局变量num:
int num;
如果我们在文件B.c中想要使用这个全局变量,可以在B.c中使用extern关键字进行声明:
extern int num;
这样,编译器就知道num是在其他文件中定义的全局变量,并会将其链接到B.c中。
需要注意的是,extern关键字只是用来声明全局变量或函数,并不会为其分配内存空间。实际的内存分配是在定义该变量或函数的文件中进行的。
extern修饰函数
extern修饰函数是用来说明函数的定义和声明的关系。在C语言中,可以在一个文件中声明一个函数而在另一个文件中定义它。这样的话,需要在函数的声明前加上extern关键字,告诉编译器该函数是在其他文件中定义的。
例如,在一个文件中声明一个全局函数如下:
extern void myFunction();
然后在另一个文件中定义该函数:
void myFunction() {
// 函数的实现
}
这样,在编译时,编译器就知道myFunction函数是在其他文件中定义的,并会在链接阶段将其正确地连接到调用它的文件中。如果没有extern关键字,编译器会在当前文件中查找函数的定义,找不到则报错。
需要注意的是,对于局部函数(函数内部定义的函数),不能使用extern修饰,因为它们只在当前文件中可见。