【发布时间】:2015-08-08 23:34:06
【问题描述】:
在编译和链接 C++ 库或程序时,不能保证静态 C++ 对象在翻译单元之间的初始化顺序。 GCC offers init_priority解决静态存档、共享对象和程序的问题:
init_priority(优先级)
在标准 C++ 中,保证在命名空间范围内定义的对象
严格按照自己的顺序进行初始化
给定翻译单元中的定义。不保证
跨翻译单元的初始化。但是,GNU C++ 允许
用户可以控制在
中定义的对象的初始化顺序 通过指定 a
具有 init_priority 属性的命名空间范围 相对优先级,当前有界的常量整数表达式
介于 101 和 65535 之间。较低的数字表示较高的
优先级。
(静态存档似乎最棘手,因为它(可能)会被其他人链接)。
Microsoft 提供了什么来控制翻译单元之间静态 C++ 对象的初始化顺序?
【问题讨论】:
标签: c++ visual-c++ static linker