我有mutlithread
通过sockets
. 我用这种结构创建新线程:
pthread_t thread;
pthread_create(&thread, NULL, c->sendMessage, (void *) fd);
wherefd
是连接的 ID,c->sendMessage
是一个函数,在创建新线程后调用并处理该线程。在这个函数中,我需要通过发送一些消息send(int sockfd, const void *buf, size_t len, int flags);
所以我是sockfd
这样的:
void * Client::sendMessage(void *threadid) {
int sockfd = (int) threadid;
// some more code here and in the end I send the data via send(int sockfd, const void *buf, size_t len, int flags)
}
我用-pedantic
标志编译,大多数编译器(包括我的)在编译过程中不会抛出任何警告或错误。但是有些人在编译过程中抛出一个错误,说这种从void *
to重新输入int
是不安全的,并且可能导致loose of precision
. 我明白,这不是一个好的解决方案,应该做得更干净。但我不知道怎么做。任何人都可以建议我任何干净的做法,如何将 ponter 重新输入为 int 并在编译期间避免任何警告?