Casting"指向数据的指针" to"指向功能的指针"

时间:2015-03-17 10:37:10

标签: c++ c

我知道在C89,C99中不允许从指向数据的指针到指向函数的指针。那么C ++呢?

1 个答案:

答案 0 :(得分:4)

简短回答:不需要实施来支持此类演员。

它可能允许reinterpret_cast执行它,受某些规则的限制(基本上:转换为对象指针并且返回必须产生原始指针)。

标准,[expr.reinterpret.cast] / 8:

  

有条件地支持将函数指针转换为对象指针类型,反之亦然。这种转换的含义是实现定义的,除非实现支持两个方向的转换,将一种类型的prvalue转换为另一种类型并返回,可能具有不同的cv-qualification,将产生原始指针值。 / p>

非嵌入式实现通常允许它用于动态链接(例如dlsym())。但严格地说,它不需要工作。