对于我即将进行的大学c项目,我被要求有模块化代码,因为c允许它。基本上,对于某些数据结构,比如链表、二叉树、哈希表,我会有一个.c文件和一个对应的.h文件。
以链表为例,我有:

typedef struct sLinkedList {
    int value;
    struct sLinkedList *next;
} List;

但这会迫使value成为int类型,使用此链表库的用户将被迫直接更改库的源代码。我想避免,我想避免改变库的需要,使代码尽可能模块化。
我的项目可能需要对整数列表使用链接列表,或者可能需要某种结构的列表。但我不会复制库文件/代码并相应地更改代码。
我该怎么解决?

最佳答案

不幸的是,没有简单的方法来解决这个问题。对于这种情况,最常见的纯c方法是使用void*,并将值复制到指针中分配的内存中。不过,这使得使用起来很棘手,而且很容易出错。

10-06 06:02