假设文件A.c 定义了一个全局变量 int g_var1; 在文件B.c 中引用的话,需要先声明一下外部引用 extern int g_var1;
如果全局变量很多的话,或者多个文件都使用了该全局变量时,一个个声明外部引用很麻烦和显得臃肿不堪。
一般水平的用法
定义一个头文件,在头文件中声明 extern int g_var1;对应程序文件中定义该变量 int g_var1;
在其他文件中使用该变量时,只需包含该头文件即可。
新奇的用法
变量直接声明在头文件中,使用宏来控制
头文件 A.h 中增加如下:
......
#if defined (_DEF_FILEA_) && (_DEF_FILEA_ == 1)
#define PROTO
#else
#define PROTO extern
#endif
PROTO int g_var1;
......
程序文件 A.c 文件增加如下:
#define _DEF_FILEA_ 1
#include “A.h”
#undef _DEF_FILEA_
其它文件中使用该变量时,只需添加#include “A.h”
比较:
缺点:看起来比较复杂些
优点:对于确定要声明的全局变量,直接写在头文件中,关键是只需“定义一次”,后期维护和修改更简单一些;
其它文件使用时,直接包含头文件。