宏定义函数使用

优缺点

优点

  • 相比函数调用空间和使用开销更少,函数调用需要下面几个步骤

  1. 开辟一片栈空间

  2. 记录返回地址

  3. 将形参压栈,

  4. 从函数返回还要释放堆栈。

  • 参数类型更加灵活

函数的参数必须被声明为一种特定的类型,所以它只能在类型合适的表达式上使用,我们如果要比较两个浮点型的大小,就不得不再写一个专门针对浮点型的比较函数。反之,上面的那个宏定义可以用于整形、长整形、单浮点型、双浮点型以及其他任何可以用“>”操作符比较值大小的类型,也就是说,宏是与类型无关的。

缺点

  • 编译时间长一般需要伴随着静态断言

  • 没有语法检查不安全

  • 重度使用时会带来明显的额外的空间占用。

宏函数在预编译时,同函数定义的代码来替换函数名,将函数代码段嵌入到当前程序,不会产生函数调用,所以会省去普通函数保留现场恢复现场的时间,但因为要将定义的函数体嵌入到当前程序,所以不可避免的会占用额外的存储空间。在频繁调用同一个宏的时候,该现象尤其明显。

 

怎么写?

  • #define开头

  • 参数无需参数类型

  • FUNC_TEST为宏定义函数名称

  • TODO为函数具体实现内容

  • 除了函数最后一行外其他都要加上 \

  • 一般函数中可以使用静态断言进行检查

#define FUNC_TEST(param1,param2)\

{\

TODO\

}

函数中的参数的使用

基本上时可以直接使用的,就是你想把参数作为什么类型的变量就用对应的方式去使用即可。就是由于没有类型检查所以使用的时候要小心注意。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值