关于全局变量与头文件关系问题
今天玩MDK时,遇到一个问题:我在 工程项目中的 hal.h 文件中定义一个位变量结构体:
typedef struct{
u16 miao:1;
u16:Secok:1;
}BitVari;
再在 main.c 中声明结构体变量:BitVari TFgs;
当我在 其他文件中需要使用这个变量时,就 include " hal.h ",编译报错:" TFgs " 未定义!使用很多办法,都没能解决问题。并联想到将来还要使用很多的全局变量,如果这样就惨啦。如是,试着QQ朋友聊聊这个问题,启发很大。还是以前的8位机编译器太先进,没遇到这问题。
现在总结下,并验证通过:
1、 hal.h 中定义变量, main.c 中申明, 再在 hal.h 中申明为 extern ;其他xxx.c 文件中 include " hal.h ",就可以啦;
2、 在 main.c 中定义全局变量 u32 GlobalVar; 在 hal.h 中申明为 extern u32 GlobalVar;其他xxx.c 文件中 include " hal.h ",就可以使用啦。
当然,hal.h 是工程全局的 include ,在所有xx .c 文件中都需要包含的。