Nem biztos, hogy működik:
sys/select.h: #define FD_SET(fd, fdsetp) __FD_SET (fd, fdsetp)
bits/select.h: #define __FD_SET(d, s) \
((void) (__FDS_BITS (s)[__FD_ELT(d)] |= __FD_MASK(d)))
bits/select2.h: #define __FD_ELT(d) \
__extension__ \
({ long int __d = (d); \
(__builtin_constant_p (__d) \
? (0 <= __d && __d < __FD_SETSIZE \
? (__d / __NFDBITS) \
: __fdelt_warn (__d)) \
: __fdelt_chk (__d)); })
Szóval FD_SET() és társai újabban védettek az overflow ellen, tehát akkor nem csak az allokációra, hanem a használatra is saját makrók kellenek. Azt szokták csinálni, hogy
#undef FD_SETSIZE
#define FD_SETSIZE nagyobb_szam
az összes fd_set és társai előtt, de azért ezek egyikét sem mondanám szépnek. Miért nem szereti senki sem a poll()-t, amivel nem kell így mókolni? :-)