经常见到这样的一段程序:
1 /* file of aa.h*/
#ifdef XXX_MODULE_GLOBALS
#define XXX_EXT
#else
#define XXX_EXT extern
#endif
XXX_EXT unsigned char VAL1, VAL2......
// end of file of aa.h
2/* file of aa.c*/
#define XXX_MODULE_GLOBALS
#include aa.h
VAL1=...
VAL2=...
3/* file of bb.c.......*/
#include aa.h
VAL1=...
VAL2=...
总结:如果步骤二中
#define XXX_MODULE_GLOBALS
#include aa.h
这两句的顺序不是这样的而是:
#include aa.h
#define XXX_MODULE_GLOBALS
编译器就会报错:变量未定义,所以一定要注意顺序。
其实也可以直接将模块对外输出的变量;也放在xx.h中这样比较整齐,,但是也容易出现不需要引脚的变量也引用了,但编译是否会报错还未可知。