define和typedef区别

本文详细阐述了typedef和define在编程中的应用区别,包括作用时间、功能、作用域及对指针操作的不同之处,旨在帮助程序员更好地理解和运用这两种预处理指令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、起作用的时间不同

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的详细区别》



  • IT从业人员需要及时关注技术动态,但是互联网的内容却过于离散,好东西往往隐藏得很深。 现在可以在微信公众号里面
    搜索关注 “小鱼儿的IT技术分享” ,订阅我为大家每天汇总的IT技术信息。欢迎大家关注!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值