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

How to declare global variable in this situation?

本文关键字:声明 全局变量 何声明 这种情况下      更新时间:2023-10-16

可能重复:
对全局变量使用extern的正确方法是什么?

很抱歉重复了类似的问题。

//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() {}

基本上我需要cbmain都可以访问对象p。我还需要c能够访问b中的方法,并且需要c能够使用Object类头。声明全局变量p的方法是什么?上面的代码给了我多重定义错误。我不能发布整个代码,因为它太长了,但我相信上面很好地描述了这种情况。

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

这样,变量将在每个.cc中被声明(由于.h中的extern声明#included(,但将仅在单个.cc中被定义

另一方面,您应该永远不要在标头中定义全局变量,否则在链接过程中会出现多个定义错误(除非它们有内部链接,即它们被声明为static,但您永远不需要在标头中指定static变量(。

顺便说一句,记住在头中使用include保护,以避免在编译阶段出现多个定义错误。