#define是編譯預處理指令,在編譯預處理時換,不作正確性檢查,不論是否正確只進行帶入替換,只有在編譯已被展開的源程式時才會發現可能的錯誤並報錯。2.typedef為C語言的關鍵字,作用是為一種資料型別定義一個新名字。兩者的區別如例:#define A int * tepedef int * A;(這是一條語句,要加分號)兩者的作用都是將A代表int *,但是#define在預處理時進行簡單的替換,而typedef不是簡單替換。typedef定義的A相當於定義了一個指標指向了int *。而#define定義的A只是進行了替換。擴充套件資料:typedef 有另外一個重要的用途,那就是定義機器無關的型別,例如,你可以定義一個叫 REAL 的浮點型別,在目標機器上它可以獲得最高的精度:typedef long double REAL;在不支援 long double 的機器上,該 typedef 看起來會是下面這樣:typedef double REAL;並且,在連 double 都不支援的機器上,該 typedef 看起來會是這樣:typedef float REAL;
#define是編譯預處理指令,在編譯預處理時換,不作正確性檢查,不論是否正確只進行帶入替換,只有在編譯已被展開的源程式時才會發現可能的錯誤並報錯。2.typedef為C語言的關鍵字,作用是為一種資料型別定義一個新名字。兩者的區別如例:#define A int * tepedef int * A;(這是一條語句,要加分號)兩者的作用都是將A代表int *,但是#define在預處理時進行簡單的替換,而typedef不是簡單替換。typedef定義的A相當於定義了一個指標指向了int *。而#define定義的A只是進行了替換。擴充套件資料:typedef 有另外一個重要的用途,那就是定義機器無關的型別,例如,你可以定義一個叫 REAL 的浮點型別,在目標機器上它可以獲得最高的精度:typedef long double REAL;在不支援 long double 的機器上,該 typedef 看起來會是下面這樣:typedef double REAL;並且,在連 double 都不支援的機器上,該 typedef 看起來會是這樣:typedef float REAL;