私はCライブラリを作成した経験がありますが、そのようなライブラリを作成している間、グッドプラクティスを説明する正式なドキュメントを読んだことはありません。私の質問は主に2つのトピックに関係しています。
- バイナリ互換性を維持する方法は?(pImplイディオム、dポインターについて聞いたことがあります)
- 下位互換性を維持するインターフェイスを設計するにはどうすればよいですか?
私の研究からわかるバイナリ互換性の主な点は、pImplイディオムを使用してライブラリをバイナリ互換にすることができるということですが、構造を変更したり、新しいデータメンバーを追加したりすると、pImplを使用している場合でもバイナリ互換性に影響を与える可能性があります。また、バイナリ互換性を実際に壊すことなく、ライブラリに新しいメソッド/関数を追加する方法はありますか?これらを追加すると、ライブラリのサイズやレイアウトが変更され、互換性が失われると思います。
バイナリ互換性をチェックするツールはありますか?
私はすでにこれらの記事を読みました。他に閲覧できるドキュメントはありますか?
http://en.wikipedia.org/wiki/Opaque_pointer
http://techbase.kde.org/Policies/Binary_Compatibility_Issues_With_C++
また、ライブラリインターフェイスの設計のコンテキストでメモリの所有権の問題を説明する記事があります。一般的な規則は何ですか?誰がどのくらいの期間メモリを所有し、誰がメモリの割り当てを解除する責任がありますか?