C、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 ,出错了 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值