C++宏相关的基础介绍

定义常量

#define ConstNum 1

防止魔术数字的书香,用以给常量值表明变量含义。

宏定义函数

#define MAX(a, b) ( (a) > (b) ? (a) : (b) )

   这种宏定义函数的方法可以使代码变得更简洁,而且可以提高代码的执行效率,我们知道程序在调用宏定义时,是在代码执行时宏定义的地方直接进行替换,所以不会像调用函数那样进行压栈,让PC指针跳转另一块内存区域,从而使执行效率提高。在编译器的头文件中也有很多类似于这种方式的宏定义,只不过函数的实体是单独提取出来的。

Tip:这里记住由于是直接在代码执行时进行替换代码操作,所以运算优先级要用()明确!

宏和函数的优缺点  

  1. 在代码长度角度上,因为宏是直接替换所以若宏较长会增加代码长度

  2. 在执行速度上,宏较函数快,因为函数存在调用/返回时的额外开销

  3. 在参数求值方面,define定义的宏可能会具有副作用会导致修改变量最后的值,而函数即使调用多次也不会修改变量原来的值

  4. 在参数类型方面,宏与类型无关,所以宏是可以传参数的而函数不行在C中函数是不可以传类型的

  5. 在是否可调试方面,宏不可调试,函数可调试

  6. 宏可以传类型的检测,实现malloc(动态开辟内存的函数)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值