gpt4 book ai didi

c++ - ctor init 不调用库中的全局 ctor 实例

转载 作者:太空宇宙 更新时间:2023-11-03 10:34:41 24 4
gpt4 key购买 nike

我正在使用 SourceryGpp lite for arm 开发一个应用程序和一个库。

我没有使用标准库或默认启动文件。因此,要调用我正在对以下代码执行的全局 ctrs:

ldr r0,=__ctors_init__
ldr r0,[r0]
mov lr,pc
bx r0

所以问题是我在静态库中定义了一些全局实例,但上面的代码从未调用过它们的构造函数。奇怪的是应用程序的全局 ctors 被成功调用,有人知道为什么吗?

最佳答案

这是静态库和运行时初始化全局变量的一个众所周知的问题。

大多数链接器将只包含满足主程序依赖性所需的静态库组件。如果没有使用编译单元中的任何对象,链接器 删除 永远不会添加整个编译单元,并且不会发生全局初始化的副作用。

有一个很好的解释here (最终总结 here )

如果使用标准库提供的启动代码,您会遇到同样的问题。

关于c++ - ctor init 不调用库中的全局 ctor 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6317796/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com