0

对于传递参数,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() 中创建。这意味着这个变量将与程序本身一样长。

4

1 回答 1

4

错误消息指的是第三个参数。pthread_create想要一个指向接受 avoid*并返回的函数的指针void*。显然该函数serverConnect是一个接受 avoid*并返回的函数void

于 2013-02-04T17:36:47.707 回答