Linux中的C語言妙用

Linux中的C語言妙用node

做者:兄弟連數組

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)函數

相關文章
相關標籤/搜索