我知道在C89,C99中不允许从指向数据的指针到指向函数的指针。那么C ++呢?
答案 0 :(得分:4)
简短回答:不需要实施来支持此类演员。
它可能允许reinterpret_cast
执行它,受某些规则的限制(基本上:转换为对象指针并且返回必须产生原始指针)。
标准,[expr.reinterpret.cast] / 8:
有条件地支持将函数指针转换为对象指针类型,反之亦然。这种转换的含义是实现定义的,除非实现支持两个方向的转换,将一种类型的prvalue转换为另一种类型并返回,可能具有不同的cv-qualification,将产生原始指针值。 / p>
非嵌入式实现通常允许它用于动态链接(例如dlsym()
)。但严格地说,它不需要工作。