我正在开发一个大型项目,该项目作为静态 c 库和一个头文件提供给我们的客户,其中包含我们公开的 API 的原型。该项目有两个相似但独特的构建,它们需要在标头中公开不同的数据结构。我正在尝试提出最佳设计,以允许单个 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);
这是一个合理的设计模式还是不赞成?谢谢!