gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 17:26:06 24 4
gpt4 key购买 nike

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

Do not use gcc constructors, or destructors, you can only loose if you do. Do not use _fini() or _ini(), don't even use your own explicit library initializer/destructor functions. It just won't work if your library is pulled in indirectly from another library or even a shared module (i.e. dlopen())

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

最佳答案

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

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

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

例如参见 Shared Library Constructor is not executed .

When (and how) are C++ global static constructors called .

GCC constructor NOT execute .

关于c - 为什么不使用 GCC 构造函数/析构函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19450136/

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