我怎样才能摆脱这个c警告?

发布于 2024-11-07 20:23:45 字数 457 浏览 1 评论 0原文

这里 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

奢望 2024-11-14 20:23:45

试试这个:

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:

您可以在这个问题中看到一些示例代码:
pthread_create() 调用的函数有多个参数?

Try this:

LaunchThread(proxy_handlereq, (void*)sock_client);

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:

LaunchThread(proxy_handlereq, (void*)(0xFFFFFFFFFFFFFFFF & sock_client);

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.:

struct MyData {
    int socket_no;
    const char* host_name;
    ...
};

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()?

拥抱没勇气 2024-11-14 20:23:45

如果 sock_client 是一个套接字,则需要将 LaunchThread 调用为:

LaunchThread(proxy_handlereq, &sock_client);

因为 CreateThreadpthread_create 都期望一个指针要传递给 func() 的参数。

If sock_client is a socket, you need to invoke LaunchThread as:

LaunchThread(proxy_handlereq, &sock_client);

because both CreateThread and pthread_create expect a pointer to the argument to pass on to func().

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文