typedef:函數
若是放在全部函數以外,它的做用域就是從它定義開始直到文件尾;spa
若是放在某個函數內,定義域就是從定義開始直到該函數結尾;code
#define:xml
無論是在某個函數內,仍是在全部函數以外,做用域都是從定義開始直到整個文件結尾。blog
如:作用域
typedef …//此處開始到文件結尾 #define …//此處開始到文件結尾 int negate(int num) { … typedef …//此處開始到該函數結束。注意,該函數內,此定義前,也不能用 #define …//此處開始到文件結尾 … } typedef …//此處開始到文件結尾 #define …//此處開始到文件結尾 void show() { typedef …//此處開始到該函數結束。 #define …//此處開始到文件結尾 }
總結:class
(1) 無論是typedef仍是define,都不能在定義以前使用;擴展
(2) typedef受函數範圍影響,而define不受;程序
(3) 無論是typedef仍是define,其做用域都不會擴展到別的文件,即便是同一個程序的不一樣文件,也不能互相使用。總結