0

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)

fdtypeintsettypeを渡していfd_set *ます。警告の原因は #define for にあるようFD_SETSIZEです。同じヘッダーからの別の抜粋:

#ifndef FD_SETSIZE
#define FD_SETSIZE  64
#endif

winsock2.h をインクルードFD_SETSIZEする前にを再定義しましたが、修正されていないようです。64U

4

1 に答える 1

0

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

マクロの関連する行は次のとおりです。

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

==なんらかの理由で比較演算子であるとは思いもしませんでした。

于 2011-07-01T08:21:53.903 に答える