我有一个树遍历API,它看起来像这样的回调函数变量参数
treeTraverse(Tree *ptr, (void *) call_back(Tree *ptr));
此API遍历树,每个条目调用回调函数。我想遍历树,并调用一个函数
myFunc(Tree *ptr, int a, int b)
对树中的每个条目,但你可以看到上面的回调函数只接受一个参数,所以注册myFunc的()为回调函数不会工作。我如何解决这个问题。
重写treeTraverse()API接受变量参数将不可行,因为它是一个框架API,如果我需要更改它,我将不得不让它被许多人审阅。不是我期待的,因为我只需要实现一个非常小的功能。
另一种方法是将变量'a'&'b'设置为全局变量,myFunc可以访问它。但是这个解决方案看起来非常难看。
是否有其他解决方法?
你可以添加一个treeTraverseWithParms函数到API吗? – Kwariz
具有内部连接的全局变量应该是可以的(尽管它们确实具有静态生命周期,当一项次要任务需要多个少数整数时,这可能是一个问题)。你的“API”看起来更像是一个函数调用语句,而不是函数声明符。 –
这不能编译“错误:预期声明说明符或'...'之前'('令牌' – fork0