嵌入式开发中,文件比较多,有很多全局变量需要在不同文件中引用。一般在头文件和C文件中采用预处理命令来避免变量的重复定义。
先看一例:
在Main.c文件的开始
#define MAIN_GLOBALS
#include “main.h”
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
在main.h文件开始
#ifdef MAIN_GLOBALS //如果存在宏定义
#define MAIN_EXT //定义MAIN_EXT为空
#else //否则
#define MAIN_EXT extern //定义MAIN_EXT为extern
#endif
MAIN_EXT uchar Car_Out,OldOut;
MAIN_EXT uchar Car_Out1,OldOut1;
MAIN_EXT uchar Car_Out2,OldOut2;
MAIN_EXT uchar Car_In,OldIn;
MAIN_EXT uchar Car_In1,OldIn1;
通过上面的2个文件可以看出,在main.c中,因为定义了宏MAIN_GLOBALS,包含头文件main.h 后,在main.c中定义了car_out,oldout等变量。
如果在其他的c文件中包含main.h,因为c文件中没有定义宏MAIN_GLOBALS,所以MAIN_EXT就是extern,也就是在其它c文件中声明car_out,oldout等变量。这样就避免了重复定义。
文章评论(0条评论)
登录后参与讨论