关于全局变量与头文件关系问题

今天玩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 文件中都需要包含的。

posted @ 2012-08-09 22:23  东湖听雨  阅读(218)  评论(0编辑  收藏  举报