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 ,出错了
posted @   秋天Code  阅读(18)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示