【发布时间】:2017-02-10 14:52:50
【问题描述】:
我昨天使用pthread_join函数遇到问题,出现编译错误,我在网上搜索了很久,但没有解决。
pthread_join.c:
#include <stdio.h>
#include <pthread.h>
void* say_hello(void* args)
{
printf("hello from thread\n");
pthread_exit((void*)1);
}
int main()
{
pthread_t tid;
int iRet=pthread_create(&tid,NULL,say_hello,NULL);
if(iRet)
{
printf("pthread create error:iRet=%n\n",iRet);
return iRet;
}
void *retval;
iRet=pthread_join(tid,&retval);
if(iRet)
{
printf("pthread_join error:iRet=%d\n",iRet);
return iRet;
}
printf("retval=%ld\n",(long)**(&retval));
// printf("retval=%ld\n",(long)retval);
return 0;
}
错误:
$ error:invalid use of void expression
我尝试使用(&retval) 来获得pthread_join 的返回值。我觉得 retval 属于 void** ,然后我使用 (retval) 应该可以获取值,但是失败了。我不能使用 void 来获取 ** 指针的值,我猜retval是pthread_join的值,但是如果用**retval获取,就不能成功。
我用gcc编译它,它会显示:
$ error:invalid use of void expression
【问题讨论】:
标签: c linux gcc pthreads pthread-join