jot*_*tik 6 c c99 language-lawyer c11
据我所知uintptr_t,并intptr_t可以用来保存任何指针void.因此,这些类型可用于存储指向数据的指针.
在C99或更高版本中,是否有类似的有符号和无符号整数类型能够保存指向函数的指针?
不,没有这样的类型.
函数指针只能被可靠地转换为其他函数指针类型(然后,只有在指向正确的函数类型时才解除引用).
6.3.2.3/6涵盖了函数指针到C中整数的转换:
任何指针类型都可以转换为整数类型.除非先前指定,否则结果是实现定义的.如果结果无法以整数类型表示,则行为未定义.结果不必在任何整数类型的值范围内.
请注意,即使整数类型足够大,也不能保证转换为整数并返回函数指针来检索原始函数指针.
在C++中,文本位于[expr.reinterpret.cast]第4点和第6点.行为类似,但它明确保证如果存在足够大小的整数,则将函数指针转换为整数并再返回会检索原始功能指针.