如果使用 tsearch
填充了一个 POSIX 二叉树,如何清理整个树?GCC 提供了 tdestroy
扩展函数,但如果想只使用 POSIX 函数该怎么办?
我的当前实现使用 twalk
遍历整个树,在遍历到 endorder
和 leaf
节点时调用 tdelete
,但这会显示有关常量正确性的警告:
static void free_tree(const void *node, const VISIT which, const int depth)
{
struct search_entry *entry;
switch (which) {
case endorder:
case leaf:
entry = *(struct search_entry **)node;
tdelete(entry->key, &node, search_entry_compare);
free(entry);
}
}
POSIX兼容应用程序的预期方法是什么?
tdestroy
。 - S.S. Annetdestroy
的3posix
手册没有提到这一点,这将非常有用。 感谢您的回答! - Marcus Harrison