【发布时间】:2019-02-03 23:50:45
【问题描述】:
假设一个人想要创建一个可以容纳多个不同类型的函数指针的数组..他会怎么做呢?也许 void 指针数组可以工作?...事实证明,不,因为为了使用存储在 void 指针中的函数,您必须将它们(void 指针)转换/转换回函数指针和...
“函数指针和 void 指针之间的转换是不可能的。void* 从来不是函数指针的通用指针类型,仅适用于对象指针。它们不是兼容的类型。
[...] 您可以在 void* 和函数指针之间进行转换,但会发生未定义的行为。您将依赖系统特定的非标准扩展。”
-@Lundin (here)
相反...
稍微好一点的方法是使用函数指针类型,例如 void (*)(void) 作为通用指针。您可以在不同的函数指针之间进行转换,所发生的事情是编译器特定的(实现定义的行为)。也就是说,代码仍然是不可移植的,但至少不会因为调用未定义的行为而导致程序崩溃。
-@Lundin (here)
也就是说,从一个函数指针转换为另一个函数指针是什么意思?
谁能解释一下。或许可以举个例子。
【问题讨论】:
-
关于你所说的@Lundin。
标签: c type-conversion function-pointers