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