【发布时间】:2011-09-01 10:13:42
【问题描述】:
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 时)没有那个警告。有人可以帮帮我吗?
【问题讨论】:
-
鉴于 Seth 的解决方案,我发现 GNU C 库文档在 pg 上包含错误。 437. 他们使用 pthread_cleanup_push(pthread_mutex_unlock, (void *) &mut);实际上,您需要将 pthread_mutex_unlock 强制转换为产生上述错误的类型 (void *)。
标签: c pthreads void-pointers