Мне не удается удалить warning C4018: '<' : signed/unsigned mismatch
из этого кода:
SOCKET s;
fd_set set;
FD_CLR(s,&set);
Мне кажется, что проблема в реализации VS2005 FD_CLR, и на самом деле это не большая проблема, просто довольно раздражает. Существует ли портативная эквивалентная версия этого кода, которая не выдает предупреждений? (ПРИМЕЧАНИЕ: я знаю, что есть #pragma для отключения предупреждения. Я также знаю, что макрос FD_CLR действительно работает отлично. Я просто ищу способ написать код без предупреждений)
РЕДАКТИРОВАТЬ: В конце концов, я обнаружил, что происходит: сторонний .h содержит (НЕПРАВИЛЬНО!!!) переопределение «u_int» как «int». Вот почему компилятор жалуется на сравнение между u_int внутри FD_CLR. Мне стыдно.
s
кint
(FD_CLR( (int)s, &set );
) и посмотреть, изменит ли это что-нибудь. Все остальное будет ковыряться воFD_CLR
внутренностях или нарушать его декларацию (т. е. лечить хуже, чем болезнь). Если подумать, вы могли бы написать оболочку дляFD_CLR
, которая локально отключает это конкретное предупреждение. - person DevSolar   schedule 14.11.2012FD_CLR
в старых или новых версиях VS. Вы уверены, что именно в этой строке ошибка? - person Some programmer dude   schedule 14.11.2012