У меня есть некоторый опыт написания библиотек C, но я никогда не читал никаких официальных документов, описывающих передовой опыт при написании таких библиотек. Мой вопрос в основном касается двух тем:
Главное в бинарной совместимости, которое я вижу в своих исследованиях, это то, что я могу сделать библиотеки бинарно совместимыми используя идиому pImpl, но изменение структуры / добавление новых элементов данных и т.д. может повлиять на его двоичную совместимость даже при использовании pImpl. Кроме того, есть ли способ добавить новые методы / функции в библиотеку без фактического нарушения двоичной совместимости? Я предполагаю, что добавление этих вещей изменит размер и структуру библиотеки, что нарушит совместимость.
Есть ли инструмент для проверки двоичной совместимости?
Я уже читал эти статьи. Могу ли я просмотреть какие-либо другие документы?
http://en.wikipedia.org/wiki/Opaque_pointer
http://techbase.kde.org/Policies/Binary_Compatibility_Issues_With_C++
Также есть статьи, которые описать проблемы владения памятью в контексте проектирования библиотечных интерфейсов. Каковы общие условности? Кто владеет памятью, как долго, кто отвечает за освобождение памяти и т. Д.?