c/c++语言开发共享不可紧缩的指针类型在coretelephony obj c中将int传递给void(*)(void)类型的参数

coreTelephony.h中定义的函数是

void _CTServerConnectionRegisterForNotification(CTServerConnectionRef,void *,void(*callback)(void)); 

然后我试着调用这个函数

 int x = 0; //placehoder for callback _CTServerConnectionRegisterForNotification(conn,kCTCellMonitorUpdateNotification,&x); 

它返回错误

不兼容的指针类型在coretelephony obj c中将int传递给void(*)(void)类型的参数

我错过了什么?

    _CTServerConnectionRegisterForNotification的第三个参数是一个函数指针,并将指针传递给int 。 即使您成功使用强制转换,稍后当连接需要通知您时,它会尝试使用您作为函数传递的值,并且由于它不是函数,因此您很可能会看到崩溃。

    使用函数而不是int:

     void callback() { } 

    然后在你当前的代码中:

     _CTServerConnectionRegisterForNotification(conn,kCTCellMonitorUpdateNotification,&callback); 

    这里, _CTServerConnectionRegisterForNotification()的第三个参数是指向一个函数的指针

    在这种情况下,您无法传递int的地址。 这是错误的,会导致未定义的行为 。

      以上就是c/c++开发分享不可紧缩的指针类型在coretelephony obj c中将int传递给void(*)(void)类型的参数相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/522385.html

      (0)
      上一篇 2020年12月9日
      下一篇 2020年12月9日

      精彩推荐