我有一些写C库的经验,但我从来没有读过任何描述良好实践的正式文档.我的问题主要涉及两个主题:
我可以从我的研究中看到的关于二进制兼容性的主要问题是我可以通过使用pImpl惯用法使库二进制兼容,但是即使在使用pImpl时,更改结构/添加新数据成员等也会影响它的二进制兼容性.另外,有没有办法在不实际破坏二进制兼容性的情况下向库中添加新方法/函数?我假设添加这些东西会改变库的大小,从而破坏兼容性.
有没有工具来检查二进制兼容性?
我已经读过这些文章了.还有其他可以仔细阅读的文档吗?
http://en.wikipedia.org/wiki/Opaque_pointer
http://techbase.kde.org/Policies/Binary_Compatibility_Issues_With_C++
此外,是否有文章描述了在设计库接口的上下文中的内存所有权问题.一般惯例是什么?谁拥有记忆,多长时间,谁负责释放记忆等?
c linux memory-management shared-libraries binary-compatibility