Posted on 2010-07-13 21:55
S.l.e!ep.¢% 閱讀(586)
評論(0) 編輯 收藏 引用 所屬分類:
C++
15. Typedef
在
C
語言中頻繁用以聲明一個已經存在的數據類型的同義字。也可以用預處理器做類似的事。例如,思考一下下面的例子:
#define dPS struct s *
typedef struct s * tPS;
以上兩種情況的意圖都是要定義
dPS
和
tPS
作為一個指向結構
s
指針。哪種方法更好呢?(如果有的話)為什么?
這是一個非常微妙的問題,任何人答對這個問題(正當的原因)是應當被恭喜的。答案是:
typedef
更好。思考下面的例子:
dPS p1,p2;
tPS p3,p4;
第一個擴展為
struct s * p1, p2;
上面的代碼定義
p1
為一個指向結構的指,
p2
為一個實際的結構,這也許不是你想要的。第二個例子正確地定義了
p3
和
p4
兩個指針。