我用c语言实现了一个通用链表:
typedef struct ListElmt_{
void *data;
struct ListElmt_ *nextElmt;
} ListElmt;
typedef struct _List {
ListElmt *head;
ListElmt *tail;
unsigned long size;
void (*destroy)(void *data);
void (*match)(void *fdata, *sdata);
}List;
但是我遇到了一个破坏我的链表通用的问题,当我希望数据是一个函数指针时,从指针到函数到指针的转换是不安全的。 我试图使用联合来解决问题。
typedef struct ListElmt_{
typedef union {
void *data;
void (*fct)();
}
struct ListElmt_ *nextElmt;
} ListElmt;