![]() |
1
7
不要使用全局变量。不要这样做。更好的方法是,如果必须拥有全局可访问的数据,那么使用一个全局函数,它将返回globalword,如下所示:
这样可以节省初始化次序问题(读取有效C++项目4)。 |
![]() |
2
5
使用“extern”关键字,您将告诉编译器实际变量存在于其他地方。您还应该在一个和中创建一个没有外部变量的同名变量。 只有一个 地点。通常,如果你定义了其中两个,你会从链接器中得到一个错误,但是如果一个在库中,而另一个不在库中,那么它可能无法解决这个问题。 编辑:确保global.cpp只在库或测试程序中,而不是同时在库或测试程序中。 |
![]() |
3
3
问题可能是初始化顺序之一。当程序链接时,有两个位置
不幸的是,C++标准没有指定来自不同模块的全局初始化的顺序。类似于 Matt's answer 使用函数或简单类(例如,单例)访问全局值是强制执行特定初始化顺序的常用方法。
The C++ FAQ talks about this a little
-如果你打算修改
|
![]() |
4
2
当你有一个动态链接库时,你描述的行为看起来更像是一个问题,但是你说你的库是静态的,这看起来很奇怪。 无论如何,要注意多个库中的全局变量,如果您有一个共享代码库(DLL),您将获得每个部分的值。退房 this 问题,可能有用。 |
![]() |
Tor · 使用Box<None>值初始化struct 3 年前 |
![]() |
Judy · 在两个JavaScript函数中更新全局变量 3 年前 |
![]() |
ask_me · Python中关于局部和全局范围的概念性问题 3 年前 |
![]() |
Astha Gupta · 闭包中的词汇作用域是如何发生的?[重复] 3 年前 |
![]() |
Empha · 从成员函数对对象所做的更改不会持续。范围/参考问题? 7 年前 |
![]() |
pag-r · Golang开关变量范围 7 年前 |
![]() |
yurnero · MATLAB:“加载”一个快速访问功能 7 年前 |