2011-07-01 24 views
0

抜粋:Winsock2.h:FD_SET:符号付きと符号なし整数式との比較winsock2.hから

#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とタイプfd_set *setfdに渡しています。警告の原因はFD_SETSIZEの#defineから発生する可能性があります。同じヘッダから別の抜粋:

#ifndef FD_SETSIZE 
#define FD_SETSIZE 64 
#endif 

私は前winsock2.hを含めへ64UFD_SETSIZEを再定義しますが、これはそれを修正していないようです。

答えて

0

fdは、u_intのタイプSOCKETである必要があります。

マクロから関連する行されました:

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

==が何らかの理由で比較演算子であるように私には発生しませんでした。

関連する問題