这里sock_client是一个套接字:
LaunchThread(proxy_handlereq, sock_client);
static void LaunchThread(int (*func)(), void *parg)
{
#ifdef WINDOWS
LPDWORD tid;
CreateThread(NULL, 0L, (void *)func, parg, 0L, &tid);
#else
pthread_t pth;
pthread_create(&pth, NULL, func, parg);
#endif
}
我收到以下警告:warning: cast to pointer from integer of different size
如何将其作为LaunchThread
的第二个参数传递?
答案 0 :(得分:1)
试试这个:
LaunchThread(proxy_handlereq, (void*)sock_client);
编辑:
好的,现在我看到:sock_client只是端口的整数。 你想把这个号码传递给另一个帖子,对吗?
(根据系统上的指针大小)你可以摆脱 这个肮脏的演员警告:
LaunchThread(proxy_handlereq, (void*)(0xFFFFFFFFFFFFFFFF & sock_client);
但实际上我建议你创建一个数据结构 所有要传递给其他线程的信息,例如:
struct MyData {
int socket_no;
const char* host_name;
...
};
然后创建一个这样的实例并将指向实例的指针传递给 你的LaunchThread函数。
EDIT2:
您可以在此问题中看到一些示例代码: Multiple arguments to function called by pthread_create()?
答案 1 :(得分:0)
如果sock_client
是套接字,则需要将LaunchThread调用为:
LaunchThread(proxy_handlereq, &sock_client);
因为CreateThread
和pthread_create
都希望参数的指针传递给func()
。