typedef和#define
define 沒有參加編譯,在預處理的時候就被替換掉了。
typedef參加編譯和鏈接。typedef是重命名,可以為枚舉結構體等等重新命名,提高代碼整潔。
一、typedef的用法
C語言中,typedef常用來定義一個標識符及關鍵字的別名,它是語言編譯過程的一部分,但它并不實際分配內存空間,實例像:
typedef int INT;
typedef (int*) pINT;
typedef可以增強程序的可讀性,以及標識符的靈活性,但它也有“非直觀性”等缺點。
二、define的用法
define為一宏定義語句,通常用它來定義常量(包括無參量與帶參量),以及用來實現那些“表面似和善、背后一長串”的宏,它本身并不在編譯過程中進行,而是在這之前(預處理過程)就已經完成了,但也因此難以發現潛在的錯誤及其它代碼維護問題,它的實例像:
define FALSE 0
define TRUE 1
define Add(a,b) ((a)+(b));
define Loop_10 for (int i=0; i<10; i++)
三、typedef與#define的區別
- #define 歸預處理器管,typedef 歸編譯器管。
- #define 是替換,typedef是重命名
個人結論:這兩個都少用