静态变量初始化顺序C+保证编译单元(.cpp文件)中的变量按声明顺序初始化。对于编译单元的数量,这条规则分别适用于每个编译单元(我指的是类之外的静态变量)。但是,变量的初始化顺序在不同的编译单元之间没有定义。关于GCC和MSVC的订单,我在哪里可以看到一些解释?(我知道,依赖这是一个非常糟糕的想法-这仅仅是为了了解我们在迁移到新GCC专业和不同操作系统时,遗留代码可能存在的问题)?
3 回答
月关宝盒
TA贡献1772条经验 获得超5个赞
有一些技巧可以解决这个问题。
延迟初始化。 将所有复杂的全局变量放在同一个编译单元中。
注1:全球: 用于引用以前可能初始化的静态存储持续时间变量。 main()
.注2:可能 在一般情况下,我们期望在main之前初始化静态存储持续时间变量,但在某些情况下允许编译器延迟初始化(规则很复杂,参见标准的详细信息)。
- 3 回答
- 0 关注
- 838 浏览
添加回答
举报
0/150
提交
取消