C语言宏定义复习
对于C语言的宏定义已经有些模糊了,今天再来复习一下。
宏定义就是一个简单的字符串直接替换
普通的宏定义
宏定义格式
#define 标识符 替换内容
注意事项
- 一般一条宏定义语句独占一行,且结尾无分号(宏定义不是语句)
- 标识符与待替换的文本之间不能用等号
=
- 标识符与替换内容之间用空格隔开
- 宏定义只是做简单的文本替换,如果替换表达式,建议使用括号括起来,否则容易出错
// 正确 #define N 5050 //错误 #define N =50 //此时 a[N] 就是 a[=50] ,报错 //错误 #define N 3+2 // N*N = 3+2*3+2, 会产生错误 //正确 #define N (3+2)
带参数的宏定义
#define 宏名(形式参数) 字符串
在调用时会使用实参去替换形参
注意
- 宏名与第一个括号之间不能有空格
- 在带参宏定义中,不会为形式参数分配内存,因此不必指明数据类型,而在宏调用中,实参包含了具体的数据,要用他们去替换形参,因此必须指明数据类型(实参必须指定数据类型)
- 在宏定义中,待替换的字符串中的形参一般使用括号括起来避免出错
// 正确 #define MAX(a ,b) ((a)>(b)?(a) : (b)) //错误 #define f(x) (x*x) //调用时 f(2+1) 会被替换成 2+1*2+1 ,出错了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现