找回密码
 立即注册
查看: 541|回复: 1

头文件中typedef和define的区别

[复制链接]

6

主题

6

回帖

68

积分

注册会员

积分
68
发表于 2023-8-17 16:52:44 | 显示全部楼层 |阅读模式
typedef和define都是为一个对象取一个别名,但也有区别
1.#define是C语言中定义的语法,是预处理指令,在预处理时只进行简单的字符串替换,不作正确性检查,只有在编译已被展开的源程序时才会发现可能的错误并报错。

2. typedef是关键字,在编译时处理,有类型检查功能。它在自己的作用域内给一个已经存在的类型一个别名,用typedef定义数组、指针、结构等类型会带来很大的方便。

3. 功能不同
typedef用来定义类型的别名,起到类型易于记忆的功能。另一个功能是定义机器无关的类型。如定义一个REAL的浮点类型,在目标机器上它可以获得最高的精度:typedef longdouble REAL, 在不支持long double的机器上,看起来是这样的,typedef double REAL,在不支持double的机器上,是这样的,typedef float REAL
#define不只是可以为类型取别名,还可以定义常量、变量、编译开关等。

4. 作用域不同
#define没有作用域的限制,只要是之前预定义过的宏,在以后的程序中都可以使用,而typedef有自己的作用域。

hb-zgl
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:12
  • 最近打卡:2023-12-18 15:13:58

4

主题

216

回帖

886

积分

高级会员

积分
886
发表于 2023-8-18 08:40:06 | 显示全部楼层
一个账号最好只开一个贴,第二次打卡只需回复原来的贴即可


回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-3 05:04 , Processed in 0.122934 second(s), 54 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表