Linux中的C語言妙用(轉)
Linux中的C語言妙用(轉)[@more@] 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
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-965604/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux-C語言LinuxC語言
- C++中const的妙用C++
- C語言的隱式型別轉換C語言型別
- Linux下C語言編譯的問題LinuxC語言編譯
- 【C語言】聊聊輾轉相除法C語言
- Linux核心C語言將升級LinuxC語言
- 【C語言學習筆記】再論快速排序的重要性與妙用空間C語言筆記排序
- Linux下C語言驗證多程式LinuxC語言
- C語言與嵌入式C語言的區別C語言
- go語言與c語言的相互呼叫GoC語言
- C語言進位制轉換與列印C語言
- Linux 檢視設定系統語言(轉)Linux
- 【C語言】linux下多檔案編譯C語言Linux編譯
- Linux下跨語言呼叫C++實踐LinuxC++
- Linux:“awk”命令的妙用Linux
- C語言C語言
- 聊聊C語言/C++—程式和程式語言C語言C++
- C 語言整數與字串的相互轉換介紹字串
- 【轉載】C 語言有什麼奇技淫巧
- 本文幫你在 Unix 下玩轉 C 語言
- c語言巨集的使用C語言
- 有用的C語言工具C語言
- c語言的基礎C語言
- C語言的函式C語言函式
- c語言的陣列C語言陣列
- DPC++中的現代C++語言特性C++
- C語言巨集定義中#define中的井號#的使用C語言
- C語言的角落——這些C語言不常用的特性你知道嗎?C語言
- C語言:一種高效、易學的程式語言C語言
- C語言字串C語言字串
- C語言(一)C語言
- C語言: returnC語言
- C語言 typedefC語言
- 終於!“30 歲”的 Linux 核心 C 語言將升級到 C11Linux
- Linux核心筆記003 - Linux核心程式碼裡面的C語言和組合語言Linux筆記C語言組合語言
- C++和c語言的分別C++C語言
- C/C++語言的學習方向C++
- C語言學習方法,怎麼學習C語言?C語言
- 零基礎轉行嵌入式——C語言C語言