使用或运算符的#define常量的多个值

时间:2017-03-08 07:15:22

标签: c++

#define DEFAULT_IPV4_PING_TYPES (PINGTYPE_ICMP_PING|PINGTYPE_TCP|PINGTYPE_TCP_USE_ACK|PINGTYPE_TCP_USE_SYN|PINGTYPE_ICMP_TS)

上面的语法实际上做了什么? 下面是常数的值。

#define PINGTYPE_ICMP_PING 2
#define PINGTYPE_TCP  16
#define PINGTYPE_TCP_USE_SYN 64
#define PINGTYPE_ICMP_TS 8

是创建数组吗?

1 个答案:

答案 0 :(得分:0)

此宏定义了所有ping类型的掩码。

按位操作

相同
#define PINGTYPE_ICMP_PING 0x2
#define PINGTYPE_TCP  0x10
#define PINGTYPE_TCP_USE_SYN 0x40
#define PINGTYPE_ICMP_TS 0x8

当你按位OR时,你得到

0x2 | 0x10 | 0x8 | 0x40 = 0x5A 

以二进制格式更清晰(使用8位简化)

00000010 (2)
01000000 (64)
00001000 (8)
00010000 (16)
=============
01011010  (5A)