天天看點

typedef 和 #define 的差別1. typedef 和 #define 的差別2. 例子說明

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;