0

引数を渡すために、pthread には void ポインターが必要です。2 つの変数intlong. 手間を省くために、long代わりに 2 つ渡します。だからこれは私がすることです:

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*)' への無効な変換

しかし、これは long ポインターを void ポインターに再入力する正しい方法ではないようです。Google 検索と同様に、Stackoverflow が私が役に立たなかったと示唆しているスレッドはありません。私は初心者であり、データ型についてまだ迷っているので、ゆっくりと説明してみてください。
ありがとうございました。

更新: main() で
作成します。unsigned long*これは、この変数がプログラム自体が存続する限り存続することを意味します。

4

1 に答える 1

4

エラーメッセージは3番目の引数を参照しています。pthread_createを取り、void*を返す関数へのポインタが必要void*です。どうやらこの関数serverConnectはaを取り、void*を返す関数ですvoid

于 2013-02-04T17:36:47.707 に答える