C语言中的宏

宏定义是我们C语言学习中非常重要的内容。一些基础的用法大家都比较清楚了,我们简单总结一下。

1.宏定义的格式为:#define 标识符 字符串。

2.宏定义属于预处理命令,在编译过程中的预处理阶段处理。

3.宏定义只是单纯的替换,所以当被替换内容涉及运算等的时候好加上括号()。

4.宏定义的标示符一般用大写。

5.宏定义的标示符为常量标示符,即不可再赋值。

6.宏定义末尾不加分号。

以上说的是宏定义的近本用法,可以带来很多好处。比如让我们的标示符有意义,让我们的代码修改更方便,可以替代在代码中常用的字符串缩短代码等。其实在宏定义中,我们也可以像一个“函数”一样实现一个的功能,这种用法叫函数宏,函数宏在我们对宏定义的使用中更加的常江,下面我们从五个方面来了解下函数宏的使用。

1.函数宏的书写

#defineMAX(a,b)((a)(b)?(a):(b)),这就是一个简单的函数宏,我们同样可以传递参数,实现功能。但是在书写上注意两点MAX和左“(”之间没有空格,因为宏定义把标示符后的第一个空格会认为是标示符与字符串的分割。当然我们在写宏的时候有时候会写多行,这样我们一般用“\”进行分割。

2.加括号

我们说到宏只是简单的替换,即使是函数宏也是这样的,所以为了避免一些优先级的错误不要忘记加括号。

3.宏的副作用

这也是函数宏和函数不同的地方。比如上边的例子 #define MAX(a,b) ((a)>(b)?(a):(b))我们传入的参数是++a和++b。很显然如果使用函数实现这个功能的话a和b均自加一次,但是如果用宏实现替换后就变成((++a)>(++b)?(

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值