C语言内的封装

前提

  在翻libevent代码的时候,看到一段C的技巧记录下来:

1 #define TAILQ_HEAD(name, type)  
2 struct name {  
3  struct type *tqh_first; /* first element */  
4  struct type **tqh_last; /* addr of last next element */  
5 }

这样就通过预编译实现双链表结构体的定义。

1 #ifdef _EVENT_DEFINED_TQENTRY
2 #undef TAILQ_ENTRY
3 struct event_list;
4 struct evkeyvalq;
5 #undef _EVENT_DEFINED_TQENTRY
6 #else
7 TAILQ_HEAD (event_list, event);
8 TAILQ_HEAD (evkeyvalq, evkeyval);
9 #endif /* _EVENT_DEFINED_TQENTRY */

 

 

你可能感兴趣的:(C语言内的封装)