对于传递参数,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 建议我没有帮助的线程以及任何 Google 搜索。所以也许,试着慢慢地解释它,因为我是初学者,我仍然迷失在数据类型上。
谢谢你。
更新:
我unsigned long*
在 main() 中创建。这意味着这个变量将与程序本身一样长。