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

为什么不使用GCC构造函数/析构函数?,c,gcc,C,Gcc,建议不要使用GCC构造函数/解构器,但说明相当简短: 不要使用gcc构造函数或析构函数,只有在 是的。不要使用_fini()或_ini(),甚至不要使用自己的 显式库初始值设定项/析构函数。只是不会 如果您的库是从另一个库间接拉入的,则工作 甚至是共享模块(即dlopen()) 有人能解释一下问题是什么以及可能出现的问题是什么,特别是在不同平台上使用GCC时?编写库时,最好的方法是不依赖于其他库,完全不依赖于状态数据(当然,库内的状态和同步不使用全局变量),干净简单的界面,以及优秀软件工程的所有

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

不要使用gcc构造函数或析构函数,只有在 是的。不要使用_fini()或_ini(),甚至不要使用自己的 显式库初始值设定项/析构函数。只是不会 如果您的库是从另一个库间接拉入的,则工作 甚至是共享模块(即dlopen())


有人能解释一下问题是什么以及可能出现的问题是什么,特别是在不同平台上使用GCC时?

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

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

作者所说的是,很难预测您的库将如何使用,以及它将在什么环境下运行,因此您应该对如何实现功能以及您可能使用的操作系统和任何其他库中的哪些服务持偏执态度

例如,请参见

或者


或者。

好吧,这是关于完全避免全局状态的部分。如果您遵循这一点,那么您需要构造函数或析构函数做什么?一个库如何不依赖于另一个库是“最佳方法”?很多图书馆都依赖于其他图书馆。你不应该重新发明轮子。@rubenvb,最好的方法和最合理的方法是有区别的。依赖库的问题是,这是另一件容易出错的事情。另一方面,图书馆提供了一种更快、更容易完成工作的方法。问题是库依赖性是否是必要的。这个特定的上下文提供了一个供其他人使用的库,libabc评论说最好不要依赖其他库。如果依赖项发生变化,这种变化可能会波及到您的库中,造成神秘的故障。