C中巨集定義與typedef的簡單認識

2021-07-27 22:04:13 字數 535 閱讀 3758

說到c中的巨集定義,我們肯定會想到define,這裡就簡單講講c語言中巨集定義define和typedef的區別

1.首先是在寫法上,define定義巨集時後面沒有分號同時前面要加#,而typedef後面有

2.程式處理上,define在預處理階段處理,後面編譯時遇到相應的巨集就進行替換,不會檢測錯誤,而typedef則是編譯階段處理,不是簡單替換處理,同時也會檢查錯誤

3.作用上,兩者都可以為型別取別名(這個型別取別名更準確說只有typedef算是),但是define還可以定義常量等

4.作用域上,巨集定義後面都可以用,而typedef有嚴格要求,定義的位置決定作用的範圍

補充:2中說到define定義的巨集用到時簡單替換,而typedef不是簡單替換,乙個經典例子:#define int int*; int a,b;這裡a的型別是int*,而b的型別是int.。typedef int * int  int a,b;這裡的a,b都是int *型別,所以這裡也印證了3中準確說typedef才能算是型別取別名。涉及到const和*組合時也存在明顯差異。當然,這些也只是我目前的簡單認識。

typedef與巨集定義區別

陷阱一 記住,typedef是定義了一種型別的新別名,不同於巨集,它不是簡單的字串替換。比如 先定義 typedef char pstr 然後 int mystrcmp const pstr,const pstr const pstr實際上相當於const char 嗎?不是的,它實際上相當於cha...

列舉 共用體 typedef與巨集定義

c 語言列舉型別 實際問題中,有些變數的取值被限制在一定範圍內。例如,乙個星期內只有七天,一年 只有十二個月,乙個班每週有六門課程等。c 語言提供了一種列舉 enum 型別,可以列出所有可能的取值。定義形式為 enum 變數名 這些值也稱為列舉元素。注意最後的分號 不能少。例如,列出乙個星期有幾天 ...

typedef和巨集定義的區別

posted on 2010 年 11 月 8 日 因為資料結構課程中,typedef和巨集定義的經常使用。前幾日室友問我typedef和巨集定義有什麼區別,我一時無法回答,隱約只記得typedef和定義在陣列方面和指標方面有區別。這兩天,為了解決自己的盲點,google了這個問題,做幾點總結。de...