需要IP标头按位定义说明

时间:2013-11-27 02:05:19

标签: c ip c-preprocessor

在以下代码中:

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_RFIP_DFIP_MFIP_OFFMASKip_off的一部分? 以及如何访问它们?

1 个答案:

答案 0 :(得分:1)

#define是预处理器命令。它们是编译替换名称,不受该结构的范围限制。

作者可能会把它们放在那里,以显示呼叫者应该在哪里使用它们。

更多阅读。

http://en.wikipedia.org/wiki/C_preprocessor - 查看宏定义和扩展。

- 或 -

http://www.cplusplus.com/doc/tutorial/preprocessor/