C++静态初始化顺序惨败发生在什么时候?

标签 c++ static

我读了this我想不出在文件 X.cpp 中初始化之前使用 X::_x 的场景(假设编译器对待 X.hX.cpp一个接一个)

有人可以向我解释一下这种情况是如何发生的吗?

最佳答案

当您有多个使用静态初始化的翻译单元*,并且其中一个初始化例程需要另一个例程生成的数据时,静态初始化顺序就会失败。

如果您只有一个 header 和一个翻译单元,则静态初始化顺序失败不适用,因为 initialization order within the same unit is well defined (它遵循声明的顺序)。

* 这是 cpp 文件的奇特名称。

关于C++静态初始化顺序惨败发生在什么时候?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38148438/

相关文章:

c++ - 初学者学习 OpenGL - 这些 OpenGL 工具是什么?

java - Java 静态方法 main 的使用有什么实际区别吗?

c - 静态变量和全局变量的使用

java - 在嵌套静态类中使用静态方法处理后重建 JFrame

c++ - Unix 函数 gmtime_r 的 Windows 等价物是什么?

c++ - 我可以获得最后调用的 CUDA API 函数的名称吗?

指向类方法调用的 C++ 指针

c++ - Arduino int 到字符串的转换

c++ - 当函数中静态变量的构造函数异常终止时会发生什么?

Java - 奇怪的静态字符串行为 - 新字符串 ("xxx") 与 "xxx"