2011-07-01 74 views
0

来自winsock2.h的摘录:Winsock2.h:FD_SET:有符号和无符号整数表达式之间的比较

#define FD_SET(fd, set) do { u_int __i;\ 
for (__i = 0; __i < ((fd_set *)(set))->fd_count ; __i++) {\ 
    if (((fd_set *)(set))->fd_array[__i] == (fd)) {\ 
     break;\ 
    }\ 
}\ 
if (__i == ((fd_set *)(set))->fd_count) {\ 
    if (((fd_set *)(set))->fd_count < FD_SETSIZE) {\ 
     ((fd_set *)(set))->fd_array[__i] = (fd);\ 
     ((fd_set *)(set))->fd_count++;\ 
    }\ 
}\ 
} while(0) 

我传入int类型的fdfd_set *类型的set。看起来警告的原因可能来自#define for FD_SETSIZE。另一个来自同一标题的摘录:

#ifndef FD_SETSIZE 
#define FD_SETSIZE 64 
#endif 

我在包含winsock2.h之前将FD_SETSIZE重新定义为64U,但这似乎没有解决它。

回答

0

fd应该是SOCKET这是u_int

从宏观的相关行是:

if (((fd_set *)(set))->fd_array[__i] == (fd)) {

没有发生,我认为==是什么原因比较操作。

相关问题