gpt4 book ai didi

c++ - 不紧凑的指针类型将 int 传递给 coretelephony obj c 中 void(*)(void) 类型的参数

转载 作者:行者123 更新时间:2023-11-30 17:14:34 24 4
gpt4 key购买 nike

coreTelephony.h中定义的函数是

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

然后我尝试调用这个函数

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

返回错误

incompatible pointer type passing int to parameter of type void(*)(void) in coretelephony obj c

我错过了什么?

最佳答案

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

使用函数而不是 int:

void callback()
{
}

然后在您当前的代码中:

_CTServerConnectionRegisterForNotification(conn,kCTCellMonitorUpdateNotification,&callback);

关于c++ - 不紧凑的指针类型将 int 传递给 coretelephony obj c 中 void(*)(void) 类型的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30275026/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com