關鍵字typeof用於獲取表示式的資料型別。只有部分編譯器支援,這個特性在linux核心中應用非常廣泛,
1. const typeof( ((type *)0)->member ) *__mptr = (ptr);
是定義乙個__mptr指標變數,型別和member的型別一樣
typeof是獲得乙個變數的型別,((type *)0)->member 則是tpye型別中的member 變數,一般type為結構體型別,member 則為其中的變數
這裡的0只是作為乙個臨時的指標位址用,任何可以表示位址的數字都可以代替0 2.
[cpp]view plain
copy
/* linux-2.6.38.8/include/linux/kernel.h */
#define min(x, y) ()
#define max(x, y) ()
通過typeof獲得x和y的資料型別,然後定義兩個臨時變數,並把x和y的值分別賦給這兩個臨時變數,最後進行比較
c語言中typeof關鍵字
c語言中typeof關鍵字 下面這兩個等效宣告,用於宣告int類弄的變數a typeof int a typeof b a 相當於獲取 b 的型別,定義乙個變數a 下面用於宣告指標和陣列 typeof int p1,p2 typeof p1 p2 p1與p2的型別一致 int p1,p2 typeo...
C語言中的typeof關鍵字
typeof關鍵字是c語言中的乙個新擴充套件。typeof的引數可以是兩種形式 表示式或型別。下面是使用表示式的的例子 typeof x 0 1 這裡假設x是乙個函式指標陣列,這樣就可以得到這個函式返回值的型別了。如果將typeof用於表示式,則該表示式不會執行。只會得到該表示式的型別。以下示例宣告...
C語言中的typeof關鍵字
typeof關鍵字是c語言中的乙個新擴充套件。typeof的引數可以是兩種形式 表示式或型別。下面是使用表示式的的例子 typeof x 0 1 這裡假設x是乙個函式指標陣列,這樣就可以得到這個函式返回值的型別了。如果將typeof用於表示式,則該表示式不會執行。只會得到該表示式的型別。以下示例宣告...