我正在使用经典的 C 进行此类分配,并且遇到了关于采用可变参数计数和类型的回调函数的问题。
基本上,我正在研究一个散列树(每个节点都是一个散列树的树),并且我有一个特定的遍历策略,将多次用于不同的目的,所以我将它实现为ht_walk(HashTree tree, (*callback)(Element e))
,这样称为回调的函数将以任何必要的方式处理元素。
问题是,在我的问题中的大多数情况下,回调函数必须采用不同的参数。我知道如何使用“可变参数”函数(使用 stdarg、printf-way)设计一个带有可变参数列表的函数,但我不知道如何将这些参数“重新传递”给回调函数。
让我提供一个具体的例子:假设我有一个名为 的回调函数addToList(Element e, List list)
,并且我的 ht_walk 声明是 now ht_walk(HashTree tree, (*callback)(Element e), ...)
。考虑我想在以下代码段中使用 ht_walk :
HashTree my_tree = ht_create();
/* run some algorithm that populates the tree somehow */
List my_list = list_create();
ht_walk(my_tree, addToList, my_list);
有没有办法做到这一点?提前致谢!