设为首页 加入收藏

TOP

利用C语言预处理器形成链表
2013-01-01 14:57:49 来源: 作者: 【 】 浏览:378
Tags:利用 语言 处理器 形成

  利用C语言预处理器的顺序Parse特性形成了一个链表。

  技巧都在IPPROTO_PREVIOUS 宏,引用#define以及#undefine,形成一个链表赋值给inet_protocol_base .

  #define IPPROTO_PREVIOUS NULL

  #ifdef CONFIG_IP_MULTICAST

  static struct inet_protocol igmp_protocol =

  {

  igmp_rcv,        /* IGMP handler        */

  NULL,            /* IGMP error control    */

  IPPROTO_PREVIOUS,    /* next            */

  IPPROTO_IGMP,        /* protocol ID        */

  0,            /* copy            */

  NULL,            /* data            */

  "IGMP"            /* name            */

  };

  #undef  IPPROTO_PREVIOUS

  #define IPPROTO_PREVIOUS &igmp_protocol

  #endif

  static struct inet_protocol tcp_protocol =

  {

  tcp_v4_rcv,        /* TCP handler        */

  tcp_v4_err,        /* TCP error control    */

  IPPROTO_PREVIOUS,

  IPPROTO_TCP,        /* protocol ID        */

  0,            /* copy            */

  NULL,            /* data            */

  "TCP"            /* name            */

  };

  #undef  IPPROTO_PREVIOUS

  #define IPPROTO_PREVIOUS &tcp_protocol

  static struct inet_protocol udp_protocol =

  {

  udp_rcv,        /* UDP handler        */

  udp_err,        /* UDP error control    */

  IPPROTO_PREVIOUS,    /* next            */

  IPPROTO_UDP,        /* protocol ID        */

  0,            /* copy            */

  NULL,            /* data            */

  "UDP"            /* name            */

  };

  #undef  IPPROTO_PREVIOUS

  #define IPPROTO_PREVIOUS &udp_protocol

  static struct inet_protocol icmp_protocol =

  {

  icmp_rcv,        /* ICMP handler        */

  NULL,            /* ICMP error control    */

  IPPROTO_PREVIOUS,    /* next            */

  IPPROTO_ICMP,        /* protocol ID        */

  0,            /* copy            */

  NULL,            /* data            */

  "ICMP"            /* name            */

  };

  #undef  IPPROTO_PREVIOUS

  #define IPPROTO_PREVIOUS &icmp_protocol

  struct inet_protocol *inet_protocol_base = IPPROTO_PREVIOUS;

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C语言的编译过程 下一篇C指针灵活应用集锦

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: