我有一个动态数组 ADT,其元素类型为 void*
// In dyn_array.h
typedef void* element;
void append(array *a, element e);
inline void set(array *a, int i, element e);
...
// dyn_array.c contains the implementation
这用于我程序的许多部分。当我向程序添加新功能时,现在我想要一个带有 int 元素而不是 void* 的动态数组。我知道其中一种解决方案可能是制作 dyn_arrayi.h 和 dyn_arrayi.c,它们的内容几乎与 dyn_array.h 和 dyn_array.c 相同,除了 typedef 语句和函数的名称。但这对我来说似乎不是一个优雅的解决方案,因为我显然是在毫无意义地重复自己。
有没有更好的解决方案,这样我就不需要重复自己了?也许编译不同版本的目标代码?你会怎么做呢?谢谢。