C语言全局变量(c文件和h文件中的全局变量静态全局变量)使用注意事项

Posted Dontla

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言全局变量(c文件和h文件中的全局变量静态全局变量)使用注意事项相关的知识,希望对你有一定的参考价值。

C语言在头文件中包含全局变量有三种形式:

1 在头文件中声明一个全局变量,在一个C文件中定义全局变量,然后在所有的引用了这个头文件的C文件里都可以使用该全局变量值。
如在main.c定义
int a = 3;
然后定义一个main.h,那么所有引用main.h的c文件中,均可以访问a并更改其值。

2 在头文件中定义一个静态全局变量。那么所有引用该头文件的C文件,均拥有一个作用域在本文件范围内的同名静态全局变量。不同文件中的该变量虽然同名,但却是不同的变量。
比如在a.h中定义
static int a = 3;
那么在a.c中引用a.h,并将a值修改为4。
在b.c中也引用a.h,不对a值做修改,打印a值,仍为3, 不会因为a.c中的修改而改变值。

3 在头文件中定义全局变量。该头文件仅可以被一个C文件引用一次。
比如a.h中定义
int a = 3;
在a.c中可以引用a.h,并对a进行访问和修改。
如果在同项目下有b.c引用了a.h,编译器在链接时会报同名全局变量的错误,导致编译失败。

参考文章:c语言头文件包含、全局变量使用问题

以上是关于C语言全局变量(c文件和h文件中的全局变量静态全局变量)使用注意事项的主要内容,如果未能解决你的问题,请参考以下文章

从 C 中的另一个文件访问全局静态变量

Keil中C语言模块化编程时全局变量、结构体处理细节

C语言动态变量和静态变量的区别

C语言之变量作用域

C语言中怎样在头文件中定义一个能够在所有文件中都可以使用的全局数组变量 ?

全局变量怎么定义