将整数数组强制转换为空指针-phread_create



为了传递参数,pthread需要void指针。我想传递两个变量,intlong。为了给自己省去一些麻烦,我将改为通过两个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*(*)"的转换无效

但这似乎不是将长指针重新键入为空指针的正确方法。我不知道Stackoverflow暗示我没有帮助的线程,以及任何谷歌搜索。所以,也许,试着慢慢解释,因为我是初学者,我仍然迷失在数据类型中
非常感谢。

更新:
我在main()中创建了unsigned long*。这意味着这个变量将和程序本身一样长。

错误消息指的是第三个参数。CCD_ 5想要指向采用void*并返回void*的函数的指针。显然,函数serverConnect是一个接受void*并返回void的函数。

最新更新