我没有设法warning C4018: '<' : signed/unsigned mismatch
从此代码中删除 a :
SOCKET s;
fd_set set;
FD_CLR(s,&set);
在我看来,问题出在 VS2005 的 FD_CLR 实现内部,实际上这不是什么大问题,只是很烦人。是否有此代码的可移植等效版本不会产生警告?(注意:我知道有一个 #pragma 可以关闭警告。我也知道 FD_CLR 宏实际上可以完美运行。我只是在寻找一种编写代码而不发出警告的方法)
编辑:最终,我发现了发生了什么:第三方 .h 包含(错误!!!)将“u_int”重新定义为“int”。这就是为什么编译器抱怨 FD_CLR 中的 u_int 之间的比较。真丢人。