当前位置: 技术问答>linux和unix
请问一个宏定义的意思
来源: 互联网 发布时间:2015-09-18
本文导语: 请问includelinuxin.h中定义的MULTICAST宏怎么解释。 #define MULTICAST(x) (((x) & htonl(0xf0000000)) == htonl(0xe0000000)) 他是什么意思啊?htonl()是干什么的?htonl(0xf0000000)和htonl(0xe0000000))分别得到什么结果啊?(x)&htonl(0xf0000000)是...
请问includelinuxin.h中定义的MULTICAST宏怎么解释。
#define MULTICAST(x) (((x) & htonl(0xf0000000)) == htonl(0xe0000000))
他是什么意思啊?htonl()是干什么的?htonl(0xf0000000)和htonl(0xe0000000))分别得到什么结果啊?(x)&htonl(0xf0000000)是什么意思啊?
谢谢各位了!!!
#define MULTICAST(x) (((x) & htonl(0xf0000000)) == htonl(0xe0000000))
他是什么意思啊?htonl()是干什么的?htonl(0xf0000000)和htonl(0xe0000000))分别得到什么结果啊?(x)&htonl(0xf0000000)是什么意思啊?
谢谢各位了!!!
|
htonl是一个函数,你可以man一下看看帮助,主要作用是把主机字节顺序的内容转换为网络字节顺序。
具体得到的结果要看你运行的环境是在什么系统之上,在intel的cpu上,由于主机是小端字节顺序而网络是大端字节顺序,所以htonl(0xf0000000)的结果是0x000000f0,而在solaris这样的系统上,因为主机同样也是大端顺序,所以结果是0xf0000000。
至于?(x)&htonl(0xf0000000)表示x与htonl(0xf0000000)的结果进行与操作。
具体得到的结果要看你运行的环境是在什么系统之上,在intel的cpu上,由于主机是小端字节顺序而网络是大端字节顺序,所以htonl(0xf0000000)的结果是0x000000f0,而在solaris这样的系统上,因为主机同样也是大端顺序,所以结果是0xf0000000。
至于?(x)&htonl(0xf0000000)表示x与htonl(0xf0000000)的结果进行与操作。
|
按操作结果及操作方法瞎猜一下啊,是不是判断网络地址,是否在组播地址范围内