将整数数组转换为void指针 - pthread_create

时间:2013-02-04 17:17:03

标签: c++ type-conversion void-pointers

传递参数,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 *(*)(void *)'

但似乎这不是重新键入指向void指针的长指针的正确方法。我不知道Stackoverflow建议我没有帮助的线程,以及任何谷歌搜索。所以也许,尝试解释它真的很慢,因为我是初学者,我仍然迷失在数据类型中 谢谢。

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

1 个答案:

答案 0 :(得分:4)

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