传递参数,pthread需要void指针。我想传递两个变量int
和long
。为了省去一些麻烦,我将通过两个long
代替。所以这就是我做的:
int main(int argc, char *argv[])
{
/*SOCKET INIT*/
pthread_t socketTh;
long data[2] = {ip2l(IP),80};
pthread_create(&socketTh, 0, &serverConnect, (void*)data); //ERROR HERE
while(true) {
/*event loop*/
}
quit_thread(&sockerTh); //just an EXAMPLE! I don't know how to quit threads, I will google it later
return 0;
}
错误:无效转换为'void(*)(void *)'到'void *(*)(void *)'
但似乎这不是重新键入指向void指针的长指针的正确方法。我不知道Stackoverflow建议我没有帮助的线程,以及任何谷歌搜索。所以也许,尝试解释它真的很慢,因为我是初学者,我仍然迷失在数据类型中 谢谢。
更新
我在main()中创建了unsigned long*
。这意味着该变量将持续与程序本身一样长。
答案 0 :(得分:4)
错误消息指的是第三个参数。 pthread_create
想要一个指向函数的指针,该函数接受void*
并返回void*
。显然,函数serverConnect
是一个函数,它接受void*
并返回void
。