在模块编程的过程中,我们经常会遇到全局变量的定义和声明,一般我们会在某个模块中定义,在别的模块中使用时在其头文件中声明即可
虽然这样可以达到目的,但是显得比较麻烦,现在我利用#ifdef、#else、#endif方便快捷的实现全局变量的定义和声明
如:我们把需要的全局的变量都放着同一个头文件中
头文件:includes.h
#ifdef GLOBALS
#define OS_EXT
#else
#define OS_EXT extern
#endif
//全局变量
OS_EXT INT32U param_1;
OS_EXT INT32U param_2;
OS_EXT INT32U param_3;
模块1:module_1.h (在这个模块中定义includes.h中的变量)
#define GLOBALS
#include "includes.h"
在预编译时,在includes.h中的变量在module_1.h 会变为下面这样(即定义)
INT32U param_1;
INT32U param_2;
INT32U param_3;
当在模块3中使用这些变量时,只需要声明即可,如下:
模块2:module_2.h
#include "includes.h" //只需要包含头文件即可
在预编译时,在includes.h中的变量在module_2.h 会变为下面这样(即声明):
extern INT32U param_1;
extern INT32U param_2;
extern INT32U param_3;
按照上面的做法,在需要那些全局变量时只需要包含头文件即可,不需要在写代码声明,不仅减少了代码量,而且方便代码的管理。以上是个人看法 ,欢迎大家来补充!