我想知道如何以及何时在C++中初始化静态内联数据(例如,在gcc或clang中)。我知道这是特定于某些体系结构的问题,与C++标准无关。
我知道对于静态/全局非内联数据,gcc正在使用.init
和.fini
部分来构造和销毁带有此类限定符的对象,但这不适用于内联静态数据,因为它可以在许多翻译单元中进行初始化,因此init
部分最终将为单个对象进行许多初始化,这是错误的。
有谁知道实现的工作原理?
明确地说,我对那些内联变量的初始化的实现感兴趣。
最佳答案
该实现等效于局部函数静态函数的实现,该函数还会重复初始化“风险”:创建了一个附加的保护变量并进行检查以使初始化仅发生一次。这个过程的assembly非常简单。
关于c++ - 内联静态数据的初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60030083/