我怎样才能摆脱这个c警告?
这里 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
}
我收到以下警告:警告:从不同大小的整数转换为指针
如何将其作为 LaunchThread
的第二个参数传递?
Here sock_client is an socket:
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
}
I'm getting the following warning: warning: cast to pointer from integer of different size
How can I pass it as the 2nd parameter of LaunchThread
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
试试这个:
编辑:
好的,现在我明白了:sock_client 只是端口的整数。
你想将这个数字传递给另一个线程,对吧?
(取决于您系统上的指针大小)您可以摆脱
这个肮脏的演员警告:
但实际上我建议您创建一个数据结构
您想要传递给另一个线程的所有信息,例如:
然后创建此实例并将指向该实例的指针传递给
你的 LaunchThread 函数。
Edit2:
您可以在这个问题中看到一些示例代码:
pthread_create() 调用的函数有多个参数?
Try this:
Edit:
Ok, now I see: sock_client is just the integer number of the port.
And you want to pass this number to the other thread, right?
(Depending on the pointer size on your system) you can get rid of the
warning by this dirty cast:
But actually I would recommend, that you create a data structure with
all the information, that you want to pass to the other thread, e.g.:
Then create an instance of this and pass a pointer to the instance to
your LaunchThread function.
Edit2:
You can see some sample code in this question:
Multiple arguments to function called by pthread_create()?
如果
sock_client
是一个套接字,则需要将 LaunchThread 调用为:因为
CreateThread
和pthread_create
都期望一个指针要传递给func()
的参数。If
sock_client
is a socket, you need to invoke LaunchThread as:because both
CreateThread
andpthread_create
expect a pointer to the argument to pass on tofunc()
.