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;