在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时)没有该警告。有人可以帮助我吗?
答案 0 :(得分:4)
void ctl_cleanup(void *arg);
以上是您正在寻找的原型。它返回void,而不是指向void的指针。
函数中的额外*是因为它接受一个函数的指针,一个void *参数返回void。