私は、顧客に静的 c ライブラリとして提供される大規模なプロジェクトと、公開された API のプロトタイプを含む 1 つのヘッダー ファイルに取り組んでいます。このプロジェクトには、ヘッダーに異なるデータ構造を公開する必要がある、似ているが独自のビルドが 2 つあります。私は、ビルドに応じて単一の API 関数が異なるデータ構造で動作できるようにするための最適な設計を考え出そうとしています。これは今のところ私の考えですが、これは悪い設計ではないかと心配しています。
私の機能はこのように実装されます
void foo(void *generic_data_struct)
{
#ifdef BUILD1
build1_t *data_struct = generic_data_struct;
#else
build2_t *data_struct = generic_data_struct;
#endif
...
}
また、公開された API ヘッダーは、顧客が注文したビルドに応じて、次のいずれかになります。
void foo(build1_t *data_struct);
また
void foo(build2_t *data_struct);
これは合理的な設計パターンですか、それとも眉をひそめていますか? ありがとう!