在Windows中创建线程时不兼容的类型
我创建了一个应用程序,其中我想要一个线程分别处理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);
我的开始function是
void start(buffer_t *buffer) { SOCKET s; struct sockaddr_in server, si_other; int slen , recv_len; char buf[BUFLEN]; WSADATA wsa; }
而错误是
1 IntelliSense:类型“void(*)(buffer_t * buffer)”的参数与“LPTHREAD_START_ROUTINE”类型的参数不兼容c:\ users \ madihamalik \ documents \ visual studio 2010 \ projects \ udp listener \ udp listener \ listerner.c 189 12 UDP监听器
尝试以下可能对您有帮助的代码..
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; ... }