如何在这种情况下声明全局变量?

时间:2011-07-04 21:46:10

标签: c++

  

可能重复:
  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 bmain都可以访问对象p。我还需要c访问b和b c中的方法才能访问Object类头。声明全局变量p的方法是什么?上面的代码给了我多重定义错误。我不能发布整个代码因为它太长了,但我相信上面描述的情况很好。

1 个答案:

答案 0 :(得分:1)

在{em>只有一个的.cc文件中声明全局变量。将其extern声明放在相应的.h文件中,然后将该文件包含在需要访问全局变量的每个其他.cc中。

这样,变量将在每个.cc声明(感谢来自extern的{​​{1}}声明#include d ,但只能在一个.h定义

另一方面,你应该永远在头文件中定义全局变量,否则你会在链接过程中得到多个定义错误(除非他们有内部链接,即它们被声明为{{1} },但你不需要在标题中定义.cc变量。

顺便说一下,请记住在标题中使用包含保护,以避免在编译阶段出现多个定义错误。