使用或运算符的多个值为#Define常数

multiple values to a #define constant using or operator

本文关键字:#Define 常数 运算符      更新时间:2023-10-16
#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

是创建数组吗?

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

它是位操作

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

当您进行钻头或获得

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

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

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