私は現在、カプセル化の標準的な手法として不透明なポインターを使用していますが、OpenGL API を見ると、id 番号を使用する方が良い選択である可能性があると思います。ベテランの C プログラマーからのアドバイスをお願いします (この言語を積極的に使用してから 2 年ほどしか経っていません)。
確認または修正したい私の最初の考えは次のとおりです。
ID 番号の考えられる利点:
ID番号を使用する場合、実装でオブジェクト/メモリプールを使用するのはかなり簡単です
ID 番号はシステム メモリにマップする必要はありません (GL の場合はグラフィックス メモリを参照できます)。
ID 番号の考えられる短所:
- 実装が少し複雑になります
共有ライブラリを使用する状況を考慮した同様の質問があります: 不透明なオブジェクトに整数 ID またはポインターを使用する必要がありますか? 私の質問は共有ライブラリに関するものではなく、ユーザー コードから実装の詳細を隠す一般的なケースに関するものです。
MyObjectHandle を typedef して、ライブラリが ID 番号と不透明なポインターを切り替えることができると思います。
問題は 、不透明なポインターと C プログラミング言語を使用した ID 番号の長所と短所は何ですか?