typedef 和 #define 的差別
- 1. typedef 和 #define 的差別
-
- 1.1 功能:
- 1.2 執行時間:
- 1.3 安全檢查:
- 1.4 作用域:
- 1.5 書寫/分号:
- 2. 例子說明
1. typedef 和 #define 的差別
1.1 功能:
typedef 是用來定義一種資料類型的别名,增強程式的可讀性;
define 主要用來定義常量,以及書寫複雜使用的宏。簡單的字元串替換
1.2 執行時間:
typedef 是編譯過程的一部分
define 是預編譯的部分,在編譯之前
1.3 安全檢查:
typedef 有正确性和安全性檢查
define 沒有類型安全檢查,不管含義是否正确它照樣會帶入,隻有在編譯已被展開的源程式時才會發現可能的錯誤并報錯
1.4 作用域:
typedef 有作用域限定。
define 沒有作用域限制,隻要是在define聲明後的引用都是正确的。
1.5 書寫/分号:
typedef 定義的是語句,是以要加分号;
define 不是語句,千萬不能再句尾加分号。
2. 例子說明
#define NUM 1024
typedef char * PCHAR1;
/* c1、c2 都為char *,typedef為char *引入了一個新的别名*/
PCHAR1 c1, c2;
/* 使用 NUM */
int iRes = NUM*10;