c - 在 Windows 中创建线程时不兼容的类型

标签 c multithreading visual-studio

我创建了一个应用程序,其中我希望线程单独处理 listen-UDP 并使我成为一个缓冲区,但是当我尝试将它传递给线程时它说存在兼容性问题

hThread = CreateThread( 
          NULL,                   // default security attributes
          0,                      // use default stack size  
          start,       // thread function name
          &buffer,          // argument to thread function 
          0,                      // use default creation flags 
          &dwThreadId);

我的启动函数是

void start(buffer_t *buffer)
{

    SOCKET s;
    struct sockaddr_in server, si_other;
    int slen , recv_len;
    char buf[BUFLEN];
    WSADATA wsa;
}

错误是

1 IntelliSense: argument of type "void (*)(buffer_t *buffer)" is incompatible with parameter of type "LPTHREAD_START_ROUTINE" c:\users\madihamalik\documents\visual studio 2010\projects\udp listener\udp listener\listerner.c 189 12 UDP listener

最佳答案

尝试以下可能对您有帮助的代码..

DWORD start(LPVOID lpdwThreadParam)
{
    buffer_t *buffer = (buffer_t *)lpdwThreadParam; //Type cast your argument here
    SOCKET s;
    struct sockaddr_in server, si_other;
    int slen, recv_len;
    char buf[BUFLEN];
    WSADATA wsa;
    ...
}

关于c - 在 Windows 中创建线程时不兼容的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30073470/

相关文章:

multithreading - libevent/epoll工作线程数?

c# - 生成的(由 T4)文件 Build Action 被重置为 Build

c++ - Visual C++ 中的二进制再现性

c - 套接字 API : accept method didn't set sockaddr_in structure

c - 为了在 C 中使用 SQL,我们需要在程序中包含哪些头文件?

c - 我无法消除矩阵,错误在哪里?

python - 在多个内核上运行 python 程序

c - 所以我尝试使用 c 创建简单的注册和登录

c - 操作系统线程是否在 go-routine 执行的 io 上被阻塞?

c# - 提交表单后从数据库中检索最新的主键 C#