c/c++语言开发共享是否有推荐的整数类型来存储标准C中的函数指针

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

      (0)
      上一篇 2021年1月9日
      下一篇 2021年1月9日

      精彩推荐