在以下代码中:
struct sniff_ip {
u_char ip_vhl; /* version << 4 | header length >> 2 */
u_char ip_tos; /* type of service */
u_short ip_len; /* total length */
u_short ip_id; /* identification */
u_short ip_off; /* fragment offset field */
#define IP_RF 0x8000 /* reserved fragment flag */
#define IP_DF 0x4000 /* dont fragment flag */
#define IP_MF 0x2000 /* more fragments flag */
#define IP_OFFMASK 0x1fff /* mask for fragmenting bits */
u_char ip_ttl; /* time to live */
u_char ip_p; /* protocol */
u_short ip_sum; /* checksum */
struct in_addr ip_src,ip_dst; /* source and dest address */
};
C 如何理解IP_RF
,IP_DF
,IP_MF
,IP_OFFMASK
是ip_off
的一部分?
以及如何访问它们?
答案 0 :(得分:1)
#define
是预处理器命令。它们是编译替换名称,不受该结构的范围限制。
作者可能会把它们放在那里,以显示呼叫者应该在哪里使用它们。
更多阅读。http://en.wikipedia.org/wiki/C_preprocessor - 查看宏定义和扩展。
- 或 -