1

我定义了一个简单的 C API,它管理具有数据类型的双向链表,在头文件中定义,并附带其功能(例如:print_data、compare 等)。

这样我就很容易将它轻松地用于我需要的任何项目中。
但是,如果我想将此 ADT用于同一个项目但使用不同的数据怎么办?

ADT 在其头文件中定义如下:

typedef struct DoublyLinkedList_ADT *dllistptr;

在它的源文件中有这两个结构:

struct DoublyLinkedListNode
{
    dllnodeptr previous, next;
    Data data;
};
struct DoublyLinkedList_ADT
{
    dllnodeptr head, tail;
    int size;
};

在数据头文件中是这样的:

typedef struct Data_type
    {
        int num;
    }Data;

这样我就可以将数据定义为我想要的任何东西。

有什么办法可以做到这一点?


我想出的唯一方法是复制粘贴代码,将“_OtherData”添加到所有“数据”引用。但这听起来不太好。

在阅读了其他一些问题之后,我发现有一个实现需要void*定义 Data 并且每次使用它时,我都必须转换为正确的数据类型。

有什么更容易/更快的吗?

4

0 回答 0