如何在头文件中声明一个全局变量以及他需要在c文件中如何
How to declare a global variable in an header file and how he need to be in the c file
我有一个严重的问题要理解如何在头文件中声明一个全局变量以及他需要如何出现在 c 文件中。
在我的 .h 中:
extern struct my_global_variable glob;
在我的 .c 上添加引用它:
struct my_global_variable glob;
是这样吗??
谢谢你的回答,祝你生活愉快 day/night depend :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
我有一个严重的问题要理解如何在头文件中声明一个全局变量以及他需要如何出现在 c 文件中。
在我的 .h 中:
extern struct my_global_variable glob;
在我的 .c 上添加引用它:
struct my_global_variable glob;
是这样吗?? 谢谢你的回答,祝你生活愉快 day/night depend :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