【发布时间】:2023-03-04 02:48:01
【问题描述】:
我希望这是一个非常重复的问题。以及我向所有觉得它烦人的观众提前的借口。
虽然我是一位经验丰富的程序员,但我不能证明使用函数指针而不是直接调用是合理的。我无法找到差异的场景是 -
1) 回调 - 同样可以通过直接调用来实现。
2) 异步或同步事件处理 - 无论如何都必须根据元素编号来识别事件。在函数指针数组中得到更新。但是同样可以通过直接调用来完成。
3) 在一些帖子中,我看到有人评论说,当它不知道要调用哪个函数时使用它。我没有得到任何适当的理由。
如果有人可以通过实际且非常简单的现实示例使用上述场景来解释我,我真的很感激。
【问题讨论】:
-
C 还是 C++?如果 C++,除非与 C 接口,否则答案几乎永远不会;因为 lambdas 和 std::function 已经取代了它们
-
函数指针不是在 C 中传递函数的唯一方法吗?如果没有函数指针,你将如何实现回调?
-
“我没有得到任何适当的理由。”尝试编写一个库,你会很快得到你的理由:-)
-
看
qsort的实现。看看它如何允许用户定义的比较器与可能的用户定义的数据类型。 -
@Vikere 回调通常意味着为某些代码提供一个函数,让它们在未来使用它来“回调”。这必然涉及传递一个函数,或者像指针这样代表函数的东西。我不确定你在这个问题中的回调是什么意思。如果你只是在定义它的范围内调用一个函数,不,你不一定需要一个指针。
标签: c++ c programming-languages