如何解决递归函数带有函数指针回调问题
我不知道标题中描述该问题的内容是什么,
考虑函数a和c
void funcA();
void funcC();
和调用函数A的函数B,条件是,如果funcA响应有问题,则需要再次调用funcB。我做了这样的回调方法:
//somewhere in the code:
void (*callbackRef)(void);
void retryOnFailure(void (*function)(void))
{
function();
//now a condition to check success of the function() response
if(!condition) {callbackRef();}
}
这里是funcB:
void funcB(){
callbackRef = &funcB;
retryOnFailure(&funcA);
//here I have the code continue and a funcC as Example (**the important part**)
funcC();
}
因此funcB通过回调函数以函数指针作为参数调用funcA,如果funcA响应失败,则回调函数:再次调用funcB!
这确实有效! 但是问题是,当funcA响应成功响应时,由于某种原因funcC被调用两次(或者重试了很多funcB!)
好的,现在我不止一次了解funcC的调用方式,而且我不知道如何以最适当的方式克服这个问题, 当然,我可以添加某种要传递的变量来告诉funcC不要被调用, 但请记住,此代码是预览问题的模型,主要代码是遗漏!我有更多的funcB和funcC案例!我不能在每个地方都添加条件。...“ GoTo”也一样!
我认为这与程序计数器有关!保存在每次迭代中停止的地方,但是如何告诉他不要保存!
感谢开发者。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。