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

文章目录

1.define

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

特点

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

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

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

2.typedef

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

特点

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

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

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

相关推荐
九死九歌3 分钟前
【Sympydantic】使用sympydantic,利用pydantic告别numpy与pytorch编程中,tensor形状带来的烦人痛点!
开发语言·pytorch·python·机器学习·numpy·pydantic
Kiri霧3 分钟前
Go切片详解
开发语言·后端·golang
二进制coder11 分钟前
C++ 中的 Interface:概念、实现与应用详解
开发语言·c++
古城小栈12 分钟前
Go 与 Rust:系统编程语言的竞争与融合
开发语言·golang·rust
随风一样自由13 分钟前
React编码时,什么时候用js文件,什么时候用jsx文件?
开发语言·javascript·react.js
_codemonster15 分钟前
自然语言处理容易混淆知识点(一)c-TF-IDF和TF-IDF的区别
c语言·自然语言处理·tf-idf
by__csdn17 分钟前
Vue3 生命周期全面解析:从创建到销毁的完整指南
开发语言·前端·javascript·vue.js·typescript·前端框架·ecmascript
小年糕是糕手17 分钟前
【C++同步练习】模板初阶
服务器·开发语言·前端·javascript·数据库·c++·改行学it
weixin_3077791323 分钟前
Jenkins Folders插件详解:组织、管理与最佳实践
运维·开发语言·自动化·jenkins
raoxiaoya25 分钟前
golang调用 elasticsearch 8,向量检索
开发语言·elasticsearch·golang