您的位置:首页 > 其它

操作fd_set结构体的宏(其实,你也可以理解为函数,只要你喜欢)

2014-01-12 23:47 543 查看
         先来看看一个错误的程序:

#include <winsock2.h>
#include <stdio.h>
#pragma comment(lib, "ws2_32.lib") //不可缺

int main()
{
int x = 0;
fd_set y;
if(FD_ISSET(x, &y))
{
printf("yes\n");
}
else
{
printf("no\n");
}

return 0;
}


      错误原因是没有对y进行初始化,那如何来初始化呢?请看下面正确的程序:

#include <winsock2.h>
#include <stdio.h>
#pragma comment(lib, "ws2_32.lib") //不可缺

int main()
{
int x = 0;
fd_set y;
FD_ZERO(&y);
if(FD_ISSET(x, &y))
{
printf("yes\n");
}
else
{
printf("no\n");
}

return 0;
}
      结果为no

      接着看:

#include <winsock2.h>
#include <stdio.h>
#pragma comment(lib, "ws2_32.lib") //不可缺

int main()
{
int x = 0;
fd_set y;
FD_ZERO(&y);
FD_SET(x, &y);
if(FD_ISSET(x, &y))
{
printf("yes\n");
}
else
{
printf("no\n");
}

return 0;
}
      结果为:yes

     接着看:

#include <winsock2.h>
#include <stdio.h>
#pragma comment(lib, "ws2_32.lib") //不可缺

int main()
{
int x = 0;
fd_set y;
FD_ZERO(&y);
FD_SET(x, &y);
FD_CLR(x, &y);
if(FD_ISSET(x, &y))
{
printf("yes\n");
}
else
{
printf("no\n");
}

return 0;
}
     结果为no

     至此,这几个宏的作用应该是搞清楚了。

       

    
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: