如何在头文件中声明全局变量以及他如何需要在c文件中

问题描述 投票:0回答:1

我在理解如何在头文件中声明全局变量以及他如何需要在c文件中时遇到严重的问题。

在我的.h中:extern struct my_global_variable glob;

并且在我的.c文件中,我引用了它:struct my_global_variable glob;

是这样吗?谢谢您的回答,白天/晚上过得愉快:P

c linux global-variables extern
1个回答
1
投票
.c文件中声明和

定义全局变量,并使用extern仅在其他.c文件中声明全局变量。

带有3个源文件的示例:g.hg1.cg2.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

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.