对于我即将进行的大学c项目,我被要求有模块化代码,因为c允许它。基本上,对于某些数据结构,比如链表、二叉树、哈希表,我会有一个.c文件和一个对应的.h文件。
以链表为例,我有:
typedef struct sLinkedList {
int value;
struct sLinkedList *next;
} List;
但这会迫使
value
成为int
类型,使用此链表库的用户将被迫直接更改库的源代码。我想避免,我想避免改变库的需要,使代码尽可能模块化。我的项目可能需要对整数列表使用链接列表,或者可能需要某种结构的列表。但我不会复制库文件/代码并相应地更改代码。
我该怎么解决?
最佳答案
不幸的是,没有简单的方法来解决这个问题。对于这种情况,最常见的纯c方法是使用void*
,并将值复制到指针中分配的内存中。不过,这使得使用起来很棘手,而且很容易出错。