gpt4 book ai didi

c - 如何创建通用的 C 自由函数

转载 作者:太空宇宙 更新时间:2023-11-04 05:02:48 25 4
gpt4 key购买 nike

我有一些与“列表”数据结构相关的 C 结构。他们看起来像这样。

struct nmlist_element_s {
void *data;
struct nmlist_element_s *next;
};
typedef struct nmlist_element_s nmlist_element;

struct nmlist_s {
void (*destructor)(void *data);
int (*cmp)(const void *e1, const void *e2);
unsigned int size;
nmlist_element *head;
nmlist_element *tail;
};
typedef struct nmlist_s nmlist;

这样我就可以在 "nmlist_element->data"中保存不同的数据类型。“构造函数”(就 OOP 而言)具有以下签名:

nmlist *nmlist_alloc(void (*destructor)(void *data));

其中“析构函数”是取消分配“数据”的特定函数(由 nmlist_element 持有)。

如果我想要一个包含整数作为数据的列表,我的“析构函数”会像这样:

void int_destructor(void *data)
{
free((int*)data);
}

我仍然觉得为每个简单的原始数据类型编写析构函数对我来说相当“不友好”。 那么写这样的东西有技巧吗? (对于原语):

void "x"_destructor(void *data, "x")
{
free(("x" *)data);
}

PS:我自己不是宏的粉丝,根据我对 C 的短暂经验,除非必要,否则我不会使用它们。

最佳答案

C free() 函数已经是通用的。只需使用免费(数据)。

关于c - 如何创建通用的 C 自由函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2552608/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com