несовместимый тип указателя, передающий int параметру типа void (*) (void) в coretelephony obj c

Функция, определенная в coreTelephony.h:

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

Тогда я попытался вызвать эту функцию

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

это возвращает ошибку

несовместимый тип указателя, передающий int параметру типа void (*) (void) в coretelephony obj c

Что мне не хватает?

0

Решение

Третий аргумент _CTServerConnectionRegisterForNotification указатель на функцию, и вы передаете указатель на int, Даже если вам удалось сделать это с помощью приведения, позже, когда соединение должно уведомить вас, оно будет пытаться использовать значение, которое вы передали в качестве функции, и, поскольку это не функция, вы, скорее всего, увидите сбой.

Используйте функцию, а не int:

void callback()
{
}

а затем в вашем текущем коде:

_CTServerConnectionRegisterForNotification(conn,kCTCellMonitorUpdateNotification,&callback);
0

Другие решения

Здесь третий аргумент _CTServerConnectionRegisterForNotification() должен быть указателем на функцию, имеющую

  • void тип возврата
  • Не принимать никаких параметров.

Вы не можете передать адрес int в таком случае. Это неправильно и приведет к неопределенное поведение.

0

По вопросам рекламы [email protected]