c - 如何在头文件中声明一个全局变量以及他需要在c文件中如何
问题描述
我有一个严重的问题要理解如何在头文件中声明全局变量以及他需要如何在 c 文件中。
在我的 .h 中:
extern struct my_global_variable glob;
并在我的 .ci 上添加以引用它:
struct my_global_variable glob;
是这样吗??感谢您的回答,祝您日夜愉快:P
解决方案
仅在 1 个文件中声明和定义全局变量,使用仅在其他文件中声明全局变量。.c
extern
.c
具有 3 个源文件的示例g.h
:g1.c
和g2.c
:
/*
* g.h
*/
typedef struct my_global_type {
int my_field;
} my_global_type;
void g2();
/*
* g1.c
*/
#include <stdio.h>
#include "g.h"
my_global_type my_global_variable;
int main() {
my_global_variable.my_field = 1;
printf("in main: my_global_variable.my_field=%d\n", my_global_variable.my_field);
g2();
printf("in main: my_global_variable.my_field=%d\n", my_global_variable.my_field);
return 0;
}
/*
* g2.c
*/
#include <stdio.h>
#include "g.h"
extern my_global_type my_global_variable;
void g2() {
printf("in g2.c: my_global_variable.my_field=%d\n", my_global_variable.my_field);
my_global_variable.my_field = 2;
printf("in g2.c: my_global_variable.my_field=%d\n", my_global_variable.my_field);
}
你编译:
gcc -o g g1.c g2.c
执行说:
./g
in main: my_global_variable.my_field=1
in g2.c: my_global_variable.my_field=1
in g2.c: my_global_variable.my_field=2
in main: my_global_variable.my_field=2
推荐阅读
- rest - 是否有可能在不每秒发送请求的情况下获得 API 结果?[VueJS | 验证]
- java - ResponseBuilder toString() 以字符串形式返回对象类,而不仅仅是原始响应字符串
- google-calendar-api - 制作谷歌日历插件
- c# - 构建枚举标志列表
- java - 不同表的重用规范作为子查询
- c# - 如何使用 .NET Core 3 Web API 和 Moq 模拟 ExceptionContext 进行测试
- r - 标记每个数据点
- r - 图例中包含气泡图大小的 Sf 地图
- php - 如何从 curl_multi_getcontent 获取结果作为数组而不是字符串
- r - 将名称和(国家)拆分为两列