歡迎您光臨本站 註冊首頁

簡單介紹Linux中的C語言妙用

←手機掃碼閱讀     火星人 @ 2014-03-26 , reply:0

1.兩個數比較大小
QUOTE:
#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)的使用
QUOTE:
#define func(x) do{...;}while(0)

4.結構體中的#define
QUOTE:
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.通過條件宏定義,同一函數名有不同的實現,方便調用此函數
QUOTE:
#ifdef xxx
#define func(x) do{實現;}while(0)
#else
#define func(x) do{}while(0)

7.零長度數組
GNU C 允許使用零長度數組,在定義變長對象的頭結構時,這個特性非常有用。例如:
QUOTE:
struct minix_dir_entry {
__u16 inode;
char name[0];
};

8.可變參數宏
在 GNU C 中,宏可以接受可變數目的參數,就象函數一樣,例如:
QUOTE:
#define pr_debug(fmt,arg...) \
printk(KERN_DEBUG fmt,##arg)


[火星人 ] 簡單介紹Linux中的C語言妙用已經有311次圍觀

http://coctec.com/docs/linux/show-post-188888.html