GNU 扩展在 main() 启动之前运行 C 例程的用例

问题描述 投票:0回答:2

我一直在阅读一本详细介绍 C/C++ 构建过程的书,它提到有一个 GNU 扩展允许您指定要在 main() 启动之前运行的函数。

这种功能有哪些好的用例?与在 main() 启动时首先做的事情有什么区别?我更喜欢理论答案而不是任何具体代码。

c function unix build gnu
2个回答
1
投票

对库初始化它们的全局状态很有用。没有它,应用程序必须从

main()
.

调用库的初始化函数

标准 C 运行时中的示例是

stdin
stdout
stderr
的初始化。虽然这些是由 C 运行时本身初始化的,但您引用的功能允许用户编写的库进行类似的初始化。

C++ 可能使用它来调用全局变量的构造函数。


0
投票

我用它来初始化静态存储变量,这些变量位于未被启动代码初始化的段中。

还有从主代码返回时调用的代码(用于清理操作)

© www.soinside.com 2019 - 2024. All rights reserved.