gcc - Winsock2.h: FD_SET: comparison between signed and unsigned integer expressions -
excerpt winsock2.h:
#define fd_set(fd, set) { u_int __i;\ (__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) i passing in fd of type int , set of type fd_set *. looks cause of warning may originate #define fd_setsize. excerpt same header:
#ifndef fd_setsize #define fd_setsize 64 #endif i redefined fd_setsize 64u prior including winsock2.h doesn't seem fix it.
fd should of type socket u_int.
the relevant line macro was:
if (((fd_set *)(set))->fd_array[__i] == (fd)) {
didn't occur me == comparison operator whatever reason.
Comments
Post a Comment