C(gcc)警告:调用pthread_cleanup_push()时从不兼容的指针类型初始化

时间:2011-05-25 03:12:43

标签: c pthreads void-pointers

在Ubuntu Linux 9.04下的gcc版本4.3.3,如果相关的话。

这是有问题的代码:

pthread_cleanup_push(ctl_cleanup, NULL);

将ctl_cleanup()定义为

void* ctl_cleanup(void *arg);

在类似情况下,还有其他情况会弹出此警告。如果我打电话给

,也会出现警告
pthread_cleanup_push(pthread_mutex_unlock, (void *)&m);

其中m的类型为pthread_mutex_t。警告说:

  

警告:从不兼容的指针类型初始化

我不明白。我已经使用void指针传递了其他东西(例如,当将参数传递给pthread时)没有该警告。有人可以帮助我吗?

1 个答案:

答案 0 :(得分:4)

void ctl_cleanup(void *arg);

以上是您正在寻找的原型。它返回void,而不是指向void的指针。

函数中的额外*是因为它接受一个函数的指针,一个void *参数返回void。