我有一個樹遍歷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