Afaik uintptr_t
和intptr_t
可用于保存指向void
的任何指针。因此,这些类型可用于存储指向数据的指针。
在C99或更高版本中,是否有类似的有符号和无符号整数类型能够保存指向函数的指针?
答案 0 :(得分:7)
不,没有这样的类型。
函数指针只能被可靠地转换为其他函数指针类型(然后,只有在指向正确的函数类型时才解除引用)。
6.3.2.3/6中包含了函数指针到C中整数的转换:
任何指针类型都可以转换为整数类型。除了之前指定的以外,结果是实现定义的。如果结果无法以整数类型表示,则行为未定义。结果不必在任何整数类型的值范围内。
请注意,即使整数类型足够大,也不能保证转换为整数并返回函数指针来检索原始函数指针。
在C ++中,文本位于[expr.reinterpret.cast]第4点和第6点。行为类似,但它明确保证如果存在足够大小的整数,那么将函数指针转换为整数并再返回检索原始函数指针。