操作fd_set结构体的宏(其实,你也可以理解为函数,只要你喜欢)
2014-01-12 23:47
543 查看
先来看看一个错误的程序:
错误原因是没有对y进行初始化,那如何来初始化呢?请看下面正确的程序:
接着看:
接着看:
至此,这几个宏的作用应该是搞清楚了。
#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
至此,这几个宏的作用应该是搞清楚了。
相关文章推荐
- 指针结构体函数-其实可以这样详细理解
- 操作fd_set的三个函数的实现小记
- 第二百九十八节,python操作redis缓存-Set集合类型,可以理解为不能有重复元素的列表
- 第二百九十九节,python操作redis缓存-SortSet有序集合类型,可以理解为有序列表
- 对OO的封装了有了新的理解——希望是普通函数来写总体流程来统管类似的业务,但却又涉及具体操作的函数,仍然可以达到目的
- 函数 __FD_SET(unsigned long fd, __kernel_fd_set *fdsetp) 的理解
- LINUX下函数FD_SET、FD_CLR等位图操作源代码
- 网络驱动移植之net_device结构体及其相关的操作函数
- select()函数以及FD_ZERO、FD_SET、FD_CLR、FD_ISSET
- select()函数以及FD_ZERO、FD_SET、FD_CLR、FD_ISSET
- select()函数以及FD_ZERO、FD_SET、FD_CLR、FD_ISSET
- 20121011总结——文件操作函数:rewind(fp) - fseek(fp, offset, seek_set) - ftell(fp)
- select()函数以及FD_ZERO、FD_SET、FD_CLR、FD_ISSET
- select()函数以及FD_ZERO、FD_SET、FD_CLR、FD_ISSET(转)
- select()函数以及FD_ZERO、FD_SET、FD_CLR、FD_ISSET(转)
- SetBkMode函数理解
- SetBkMode函数理解
- select()函数以及FD_ZERO、FD_SET、FD_CLR、FD_ISSET
- opencv 鼠标操作SetMouseCallback()函数传递用户定义参数的问题
- 操作无效,原因是它导致对 SetCurrentCellAddressCore 函数的可重入调用。