C99标准有uintptr_t
,一种推荐的整数类型,用于将数据指针(指向对象的指针)转换为,但是我找不到用于存储函数指针的等效整数类型。 我忽略了吗?
特定编译器可以定义这样的类型,即使它不在标准中,但编译器更可能声明函数指针可以存储在(比如说) uint64_t
不是定义新类型。
另一个不同之处在于,对数据指针执行整数运算是有意义的,而不是在函数指针上。 一个常见的习语是(int*)(((uintptr_t)p + 15) & ~(uintptr_t)15)
但是没有理由将这个习语应用于函数指针。
没有这样的推荐指针类型。
要存储指针,您可以使用任何其他函数指针类型,只要您不通过它调用您的函数。
如果您将指针转换回原始类型,则可以调用您的函数。 这始终有效。
我没有找到存储函数指针的等效整数类型
那是因为你不能将函数指针转换为整数。 这样做会导致未定义的行为。
转换的函数指针没有这样的整数类型。
其中一个原因是:在某些机器上,函数地址可能非常大,比任何数据指针都大。
以上就是c/c++开发分享是否有推荐的整数类型来存储标准C中的函数指针相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/544852.html