【C语言】#define和typedef的区别

文章目录

1.define

#define 是预处理器指令,用来进行宏定义。它在编译之前由预处理器处理,主要用于定义常量、简单的函数宏或者代码片段的替换。

特点

文本替换:#define 主要用于文本替换,在编译前将指定的标识符替换为相应的值或表达式。

无类型检查:由于是在预处理阶段执行的简单文本替换,编译器不会对 #define 定义的内容进行类型检查。

作用范围广泛:可以用于定义常量、函数宏等。

2.typedef

typedef 是关键字,用于给现有的数据类型创建一个新的名字。它在编译阶段处理。

特点

类型别名:typedef 用于为现有类型创建一个新的名字,使得代码更加易读或简化复杂类型的声明。

类型安全:由于是在编译阶段处理的,编译器会对 typedef 定义的类型进行类型检查。

作用范围特定于类型:只能用于定义类型的别名,不能用于定义常量或函数宏。

相关推荐
诗书画唱12 分钟前
【前端面试题】JavaScript 核心知识点解析(第二十二题到第六十一题)
开发语言·前端·javascript
冬天vs不冷13 分钟前
Java基础(九):Object核心类深度剖析
java·开发语言·python
TS的美梦14 分钟前
【1:1复刻R版】python版火山图函数一键出图
开发语言·python·r语言·scanpy·火山图
陈天伟教授1 小时前
(二)Python + 地球信息科学与技术 (GeoICT)=?
开发语言·python
SunnyKriSmile1 小时前
输入10个数并求最大值
c语言·算法
七七&55610 小时前
2024年08月13日 Go生态洞察:Go 1.23 发布与全面深度解读
开发语言·网络·golang
java坤坤10 小时前
GoLand 项目从 0 到 1:第八天 ——GORM 命名策略陷阱与 Go 项目启动慢问题攻坚
开发语言·后端·golang
元清加油10 小时前
【Golang】:函数和包
服务器·开发语言·网络·后端·网络协议·golang
健康平安的活着10 小时前
java之 junit4单元测试Mockito的使用
java·开发语言·单元测试
No0d1es11 小时前
电子学会青少年软件编程(C/C++)5级等级考试真题试卷(2024年6月)
c语言·c++·算法·青少年编程·电子学会·五级