我在理解如何在头文件中声明全局变量以及他如何需要在c文件中时遇到严重的问题。
在我的.h中:extern struct my_global_variable glob;
并且在我的.c文件中,我引用了它:struct my_global_variable glob;
是这样吗?谢谢您的回答,白天/晚上过得愉快:P
定义全局变量,并使用extern
仅在其他.c
文件中声明全局变量。
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