当前位置: 首页 >> 程序设计 >> Linux中的C语言妙用
 

Linux中的C语言妙用

作者:strongzgy      来源:cublog     发表时间:2006-07-24     浏览次数:      字号:    

1.两个数比较大小
    #define min( x,y) ({ \
    typeof( x) _x = ( x); \
    typeof( y) _y = ( y); \
    (void) (&_x == &_y); \ //妙用!作用是检查参数 x 和 y 的类型是否相同
    _x < _y ? _x : _y; })
  
2.链表的使用
   这个不多说了,太棒了,可以由一个链表成员获取宿主的指针
3.do{}while(0)的使用
   #define func(x) do{...;}while(0)
4.结构体中的#define
   struct sock {
       struct sock_common    __sk_common;
   #define sk_family        __sk_common.skc_family
   #define sk_state        __sk_common.skc_state
       .....
   };
5.使用C写出的面向对象程序,通过给结构体中的成员赋予不同的函数指针而实现不同的功能,取代了大量的case语句
6.通过条件宏定义,同一函数名有不同的实现,方便调用此函数
  #ifdef xxx
     #define func(x)  do{实现;}while(0)
  #else
     #define func(x)  do{}while(0)
7.零长度数组
GNU C 允许使用零长度数组,在定义变长对象的头结构时,这个特性非常有用。例
如:
 struct minix_dir_entry {
         __u16 inode;
        char name[0];
};
8.
可变参数宏
  在 GNU C 中,宏可以接受可变数目的参数,就象函数一样,例如:
  #define pr_debug(fmt,arg...) \
       printk(KERN_DEBUG fmt,##arg)

责任编辑 webmaster

 
 
 
 
 
评论更多>>
 
 
 
发表
 
姓名: QQ:
性别: MSN:
E-mail: 主页:
评分: 1 2 3 4 5
评论内容:
验证码:
  
  • 请遵守《互联网电子公告服务管理规定》及中华人民共和国其他各项有关法律法规。
  • 严禁发表危害国家安全、损害国家利益、破坏民族团结、破坏国家宗教政策、破坏社会稳定、侮辱、诽谤、教唆、淫秽等内容的评论 。
  • 用户需对自己在使用本站服务过程中的行为承担法律责任(直接或间接导致的)。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表网友个人观点,与本网站立场无关。
  •