读书人

不同文件中使用同一个全局变量的方法

发布时间: 2012-03-23 12:06:21 作者: rapoo

不同文件中,使用同一个全局变量的方法?
文件一多,什么问题都是问题了,譬如,我有两个文件,A.c,B.c其头文件,分别为A.h和B.h,现在头文件A.h中定义了一个结构体S,而同时在A.c中,定义了S类型的全局变量var,而现在处于某种需要,我需要在B.c中要使用这个变量var,但是在B.h并没有包含结构体S的定义,那么我现在要怎么办,才能在B.c中使用这个变量,处于某种原因,B.h不能包含A.h文件,现在应该怎么办?只能在B.h中再定义一次这个结构体嘛?
比如在B.h中,使用如下:
typedef struct SB
{
成员和类型同A.h中的S
}B,
然后在B.c中,使用extern B var;以便使用这个变量!
可是这样我总觉得有点多此一举!有没有其他的办法可以实现上面的动作!!!
不知道有没有其他办法实现?

[解决办法]
那你把S类型的定义单独放到另一个头文见里,并声明extern S var;
然后a.c 和b.c都包含这个头文件
[解决办法]
extern声明
[解决办法]
在A.c里面定义一组指针,类型跟结构体里面的定义当然要一样。
在初始化的时候就让这些指针分别指向结构体里面的成员。

在B.c里面分别extern,这样就可以不用再用个一模一样的结构体,
但是也能共享变量了。

这是不得已的办法,纯粹是为了解决问题而解决问题。嗬嗬!
[解决办法]
我比较在意楼主包含文件的用法```不知和我一样否```
全局变量能少用还是少用```不过为了效率,有些地方还是的用。

我建议把struct S定义放到一个gDefine.h中去,然后A.c,B,c分别去包含这个hDefine.h。
因为对于sturct S来说,既然B.c要使用这个结构类型的变量,那么S对于B.c和A.c来说都是可见的,也就是说属于公用的结构体,那么放到gDefine.h中(定义所有公用结构体),是顺理成章的事情,楼主你觉得呢?

还有```建议不要在.h中包含文件,文件包含都放到.c中进行。

读书人网 >C语言

热点推荐