C語言中的typeof

2021-06-20 19:24:29 字數 527 閱讀 5426

關鍵字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用於表示式,則該表示式不會執行。只會得到該表示式的型別。以下示例宣告...