在这种情况下,如何声明全局变量
How to declare global variable in this situation?
可能重复:
对全局变量使用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() {}
基本上我需要c
、b
和main
都可以访问对象p
。我还需要c能够访问b中的方法,并且需要c能够使用Object类头。声明全局变量p的方法是什么?上面的代码给了我多重定义错误。我不能发布整个代码,因为它太长了,但我相信上面很好地描述了这种情况。
只声明中的一个.cc
文件中的全局变量。将其extern
声明放在相应的.h
文件中,然后将该文件包含在需要访问全局变量的每隔一个.cc
中。
这样,变量将在每个.cc
中被声明(由于.h
中的extern
声明#include
d(,但将仅在单个.cc
中被定义。
另一方面,您应该永远不要在标头中定义全局变量,否则在链接过程中会出现多个定义错误(除非它们有内部链接,即它们被声明为static
,但您永远不需要在标头中指定static
变量(。
顺便说一句,记住在头中使用include保护,以避免在编译阶段出现多个定义错误。
相关文章:
- 将变量声明为全局变量,然后声明为局部变量 -Shadowing-
- 将静态全局变量声明为内联有什么意义吗?
- 我真的可以使用 Type 的每个声明创建一个全局变量吗?
- 声明为类字段而不是全局变量
- 有什么理由C++ 11+ std::mutex 应该声明为全局变量,而不是作为函数参数传递到 std::thread 中
- 在结构声明的分号之前声明的结构变量是否为全局变量
- 困惑,为什么没有在此范围内声明 c++ 全局变量
- 使用静态和避免单例模式声明全局变量
- 声明全局变量 <vector>,代码将无法成功运行
- 即使在定义类后也无法在C++中声明全局变量?
- 查找声明全局变量的文件
- 我应该如何在我的C++项目中声明全局变量
- 使用预处理器技巧定义和声明全局变量
- 如何在C++中声明全局变量
- 在c++中声明全局变量时出现问题
- 声明全局变量,在方法中初始化
- 在C中声明全局变量会改变入口点吗?
- 在这种情况下,如何声明全局变量
- 声明全局变量<vector>问题
- 在C++中定义和声明全局变量