前言
C語言中 typeof 關鍵字是用來定義變量數據類型的。在linux內核源代碼中廣泛使用。
下面是Linux內核源代碼中一個關于typeof實例:
1
2
3
4
5
|
#define min(x, y) ({ \ typeof(x) _min1 = (x); \ typeof(y) _min2 = (y); \ ( void ) (&_min1 == &_min2); \ _min1 < _min2 ? _min1 : _min2; }) |
1.當x的類型為是 int 時 _min1變量的數據類型則為 int。
2.當x為一個表達式時(例: x = 3-4), _min1變量的數據類型為這個表達式結果的數據類型。
.......
3.typeof括號中也可以是函數
例:
1
2
|
int function( int , int ); typeof(function(1. 2)) val; |
此時val的數據類型為 函數function(int, int)返回值的數據類型 ,即int類型。(注意: typeof并不會執行函數function)。
typeof關鍵字有點類似與c++中的decltype關鍵字。
原文鏈接:http://blog.csdn.net/comingflying/article/details/58053937