可能重复:
What is the correct way of using extern for global variables ?
很抱歉重复类似的问题。
//object.h
object p;
//b.h
#include object.h
//b.cc
extern object p;
//c.h
#include object.h
#include b.h
//c.cc
extern object p;
//main.cc
#include c.h
extern object p;
int main() {}
基本上我需要c
b
和main
都可以访问对象p
。我还需要c访问b和b c中的方法才能访问Object类头。声明全局变量p的方法是什么?上面的代码给了我多重定义错误。我不能发布整个代码因为它太长了,但我相信上面描述的情况很好。
答案 0 :(得分:1)
在{em>只有一个的.cc
文件中声明全局变量。将其extern
声明放在相应的.h
文件中,然后将该文件包含在需要访问全局变量的每个其他.cc
中。
这样,变量将在每个.cc
中声明(感谢来自extern
的{{1}}声明#include
d ,但只能在一个.h
中定义。
另一方面,你应该永远在头文件中定义全局变量,否则你会在链接过程中得到多个定义错误(除非他们有内部链接,即它们被声明为{{1} },但你不需要在标题中定义.cc
变量。
顺便说一下,请记住在标题中使用包含保护,以避免在编译阶段出现多个定义错误。