Не успявам да премахна warning C4018: '<' : signed/unsigned mismatch
от този код:
SOCKET s;
fd_set set;
FD_CLR(s,&set);
Струва ми се, че проблемът е в изпълнението на FD_CLR на VS2005 и всъщност не е голям проблем, просто е доста досадно. Има ли преносима еквивалентна версия на този код, която не извежда предупреждения? (ЗАБЕЛЕЖКА: Знам, че има #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