首页 > 代码库 > define和typedef区别
define和typedef区别
一、起作用的时间不同
typedef在编译阶段起作用,因此有类型检查的功能。
define在预处理阶段起作用(编译之前),只进行简单的字符串替换而不进行类型检查。
二、功能不同
typedef
(1)用来定义类型的别名
(2)定义机器无关的类型
(例如定义一个叫 REAL 的浮点类型,在目标机器上它可以获得最高的精度:typedef long double REAL;
那么在不支持 long double 的机器上,该 typedef 看起来会是下面这样:typedef double REAL;
甚至在连 double 都不支持的机器上,该 typedef 看起来会是这样:typedef float REAL;)
define
(1)为类型取别名
(2)定义常量、变量、编译开关
三、作用域不同
#define没有作用域的限制,只要是之前预定义过的宏,在以后的程序中都可以使用。
而typedef有自己的作用域。
四、对指针的操作
<span style="font-size:14px;">typedef int * pint; #define PINT int * </span>
<span style="font-size:14px;"> const pint p;//p不可更改,p指向的内容可以更改,相当于 int * const p; const PINT p;//p可以更改,p指向的内容不能更改,相当于 const int *p;或 int const *p; pint s1, s2; //相当于<span style="font-family: 'Times New Roman'; line-height: 19.5px; background-color: rgb(250, 247, 239);">int *a; int *b;</span> 也就是两者都是指针 PINT s3, s4; //相当于<span style="font-family: 'Times New Roman'; line-height: 19.5px; background-color: rgb(250, 247, 239);">int *a, b; 只有前者是指针</span></span>
更详细的内容请看《typedef和define的详细区别》
define和typedef区别
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。