为什么不使用GCC构造函数/析构函数?

LeS*_*cky 6 c gcc

libabc建议不要使用GCC构造函数/解析器,但解释相当简短:

不要使用gcc构造函数或析构函数,只有这样才能松散.不要使用_fini()或_ini(),甚至不要使用自己的显式库初始化器/析构函数.如果您的库是从另一个库甚至是共享模块(即dlopen())间接引入的,它将无法工作

有人可以解释问题是什么以及可能会破坏什么,特别是在不同平台上使用GCC?

Ric*_*ers 2

编写库时,最好的方法是不依赖于其他库,完全不依赖于状态数据(当然不使用库内的全局变量进行状态和同步),干净简单的接口,以及所有其他良好软件工程的基本原则。

libabc 的自述文件提供了一个相当好的列表,其中列出了作者发现的使库难以使用或引入各种微妙缺陷的所有方法。

作者所说的是,很难预测您的库将如何使用以及它将运行的环境,因此您应该对如何实现功能以及操作系统和任何其他库提供哪些类型的服务保持偏执你可能会使用。

例如,请参阅共享库构造函数未执行

或者何时(以及如何)调用 C++ 全局静态构造函数

或者GCC 构造函数不执行