typedef 的兩種用法(轉(zhuǎn))
typedef是c/c++代碼中經(jīng)常用到的一個(gè)關(guān)鍵字. 他的主要做用是給變量類型定義一個(gè)別名.從而達(dá)到代碼簡(jiǎn)化, 促進(jìn)跨平臺(tái)開(kāi)發(fā)的目的.
下面是typedef的最經(jīng)常的用法:
typedef struct{
int a;
int b;
}MY_TYPE;
這里把一個(gè)未命名結(jié)構(gòu)直接取了一個(gè)叫MY_TYPE的別名, 這樣如果你想定義結(jié)構(gòu)的實(shí)例的時(shí)候就可以這樣:
MY_TYPE tmp;
這是typedef的第一種用法. 比較簡(jiǎn)單. 就是 typedef 原變量類型 別名
相似的例子:
typedef unsigned long DWORD; 無(wú)符號(hào)長(zhǎng)型
typedef void far *LPVOID; //void far *是原變量類型, 表示一個(gè)void 型指針(far 在32位系統(tǒng)里面已經(jīng)沒(méi)有意義了)
等等
typedef還有第二種用法. 可能這種用法初學(xué)者沒(méi)有接觸過(guò).
比如:
typedef int (*MYFUN)(int, int);
這種用法一般用在給函數(shù)定義別名的時(shí)候.(其實(shí)質(zhì)還是和上面的用法一樣的)
上面的例子定義MYFUN 是一個(gè)函數(shù)指針, 函數(shù)類型是帶兩個(gè)int 參數(shù), 返回一個(gè)int
在分析這種形式的定義的時(shí)候可以用下面的方法:
先去掉typedef 和別名, 剩下的就是原變量的類型.
比如上面的例子:
去掉typedef和MYFUN以后就剩:
int (*)(int, int)
讀了我前面一課里面討論的 <<細(xì)說(shuō)如何確定一個(gè)變量的類型>>的朋友應(yīng)該很容易就得出這個(gè)類型指的時(shí)是
一個(gè)函數(shù)指針, 函數(shù)類型是帶兩個(gè)int 參數(shù), 返回一個(gè)int
posted on 2007-09-19 15:23 九寶 閱讀(216) 評(píng)論(0) 編輯 收藏 所屬分類: C++/C