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