我有两个功能:c函数合并帮助
void free_this(THIS *this)
{
THIS *this_tmp;
while (this_tmp = this)
{
if (this->str)
free(this->str);
this = this_tmp->next;
free(this_tmp);
}
}
void free_that(THAT *that)
{
THAT *that_tmp;
while (that_tmp = that)
{
if (that->id)
free(that->id);
that = that_tmp->next;
free(that_tmp);
}
}
因为他们都非常相似,我试图想出一个函数来处理他们。我已经可以使用一个指针指向正确的数据以释放(例如指向THIS结构中的任何一个str或THAT结构的id),但我无法弄清楚如何解决正在处理的结构类型因为我无法使用void指针,因为void *没有名为'NEXT'的成员。
任何想法?
也许我应该把两个结构THIS和THAT合成一个结果呢?他们是:
typedef struct this {
struct this *next;
char *str;
} THIS;
typedef struct that {
struct that *next;
char *id;
unsigned short result;
OTHERTHING *optr;
} THAT;
我可能可能使用offsetof函数以某种方式获取下一个元素?
如果您使用的是C++编译器,那么这就是C++模板派上用场的地方。 – DaMacc 2009-12-01 17:06:36