define與typedef區別
define代表替換,typedef代表別名,可以從中文意義上來理解他們的區別。
define是在編譯之前,編譯器會將一些內容替換成另外一些內容,並且是全局的,
如下:
#define FUNCTION test
註釋:會將代碼裏的FUNCTION替黃成test
#define FUNCTION(x) void test(x){x++;}
註釋:可帶上參數,如x
#define FUNCTION(x) do{ x++}while(0)
註釋:或直接替換成操作
typedef是別名,給一些類型,變量,結構體,聯合體之類的起一個別名,非全局,
如下:
typede int aaa;
註釋:這意味着我們可以使用aaa x;(這代表int x;)
typedef struct val_struct val;
註釋:我們以後要使用val_struct類型的變量時,可以直接
val aaa;
而不需要
val_struct aaa;
來獲取一個結構體變量。
別名在一些自定義類型名稱過於複雜,太長的情況下使用。
注意,define不是程序語句,不需要加分號,typedef是程序語句,需要加分號