История изменений
Исправление hateyoufeel, (текущая версия) :
Проверка в коде программы. У меня например это так выглядит:
FD_ZERO(&fds); #ifdef WIN32 if(sock<0) { WSASetLastError(WSAEBADF); return -1; } FD_SET((unsigned int)sock, &fds); #else if(sock<0 || sock>=(int)FD_SETSIZE) { errno=EBADF; return -1; } FD_SET(sock, &fds); #endif
Погоди. А где переносимость-то? Уже лапша из ifdef на ровном месте.
Кстати, ни разу таких проверок нигде не видел. Да и понятно почему. Мало кто настолько упорот, чтобы из-за валидного fd вешать нахрен всю программу, потому что ему именно что всралось использовать ущербный API, который старше большинства живущих сегодня программистов.
Исходная версия hateyoufeel, :
Проверка в коде программы. У меня например это так выглядит:
FD_ZERO(&fds); #ifdef WIN32 if(sock<0) { WSASetLastError(WSAEBADF); return -1; } FD_SET((unsigned int)sock, &fds); #else if(sock<0 || sock>=(int)FD_SETSIZE) { errno=EBADF; return -1; } FD_SET(sock, &fds); #endif
Погоди. А где переносимость-то? Уже лапша из ifdef на ровном месте.
Кстати, ни разу таких проверок нигде не видел.