區別如下:
1、typedef要寫成語句的形式,即末尾要加分號(;),而#define是宏定義,末尾沒有分號
2、typedef是為已經存在的資料型別起個別名,用這個別名來表示這個資料型別,如:
typedef unsigned int uInt32;
uInt32 a,b,c; //定位了3個無符號整型變數
#define是定義一個宏名來表示跟在其後面的一個字串或者表示式,它只是作簡單的字元替換,在預處理階段
編譯器會將所有的宏名用其後面的字串或者表示式作替換,而不做任何的運算。如:
#define N 10 //用N來表示常數10
#define MAX(a,b) (a>b?a:b) //用帶引數的宏名MAX來表示表示式(a>b?a:b)。
呼叫的時候:
int a=3,b=4;
MAX(A,B); //等價於(a>b?a:b); 因為它只是將實參傳進去,然後做簡單的字元替換。
區別如下:
1、typedef要寫成語句的形式,即末尾要加分號(;),而#define是宏定義,末尾沒有分號
2、typedef是為已經存在的資料型別起個別名,用這個別名來表示這個資料型別,如:
typedef unsigned int uInt32;
uInt32 a,b,c; //定位了3個無符號整型變數
#define是定義一個宏名來表示跟在其後面的一個字串或者表示式,它只是作簡單的字元替換,在預處理階段
編譯器會將所有的宏名用其後面的字串或者表示式作替換,而不做任何的運算。如:
#define N 10 //用N來表示常數10
#define MAX(a,b) (a>b?a:b) //用帶引數的宏名MAX來表示表示式(a>b?a:b)。
呼叫的時候:
int a=3,b=4;
MAX(A,B); //等價於(a>b?a:b); 因為它只是將實參傳進去,然後做簡單的字元替換。