各位高手:
我在我的project里面定义了一个声明全局变量的头文件(globaldef.h,和globaldef.cpp)其中我在.h文件里面声明一个数组和两个自己定义的类的对象(这些都是要做全局变量的),在别的类要用得这些全局变量我就#include "globaldef.h",意思是多处包含到头文件globaldef.h,而且我在.h文件里面有这样的语句
#ifndef _GLOBALDEF_H_
#define _GLOBALDEF_H_
//定义全局变量……#endif
这样的语句,可是我添加到我的Project的时候,编译提示是这些变量已经被声明过,但是里面的那些比如int 的变量没提示出错,为此我不得不在那些提示错误的变量、对象啊前面加上static ,有哪一位遇到过这种情况吗?能否给我讲讲你的解决方法,这个问题实在是另我头痛啊!
我在我的project里面定义了一个声明全局变量的头文件(globaldef.h,和globaldef.cpp)其中我在.h文件里面声明一个数组和两个自己定义的类的对象(这些都是要做全局变量的),在别的类要用得这些全局变量我就#include "globaldef.h",意思是多处包含到头文件globaldef.h,而且我在.h文件里面有这样的语句
#ifndef _GLOBALDEF_H_
#define _GLOBALDEF_H_
//定义全局变量……#endif
这样的语句,可是我添加到我的Project的时候,编译提示是这些变量已经被声明过,但是里面的那些比如int 的变量没提示出错,为此我不得不在那些提示错误的变量、对象啊前面加上static ,有哪一位遇到过这种情况吗?能否给我讲讲你的解决方法,这个问题实在是另我头痛啊!
比如:存在下面的几个文件,a.h中的一个定义需要使用到globaldef.h中的一个声明
a.cpp, a.h, globaldef.h, globaldef.cppa.h中最好不include任何东西
a.cpp中在include a.h之前include globaldef.h
而在头文件里面这么写extern int a;这样别的文件包含了这个头文件之后,就可以使用这个a,还不会出上面的错误。
声明全局函数,返回指向全局变量的指针比较好
最好的办法还是不要用全局变量
1)如果需要使用globaldef.h中声明的类,那么可以这样在*.h中声明:class globaldef;//假如全局的类名是这样的
但是只能使用这个类的定义,也就是说,只能定义指针或者引用,不能定义变量。但是可以作为形参。
2)然后在*.cpp中引用#include "globaldef.h",调用这个指针实际的值就可以了。