内联函数和宏定义

内联函数

内联函数和普通函数相比可以加快程序运行的速度,因为不需要中断调试,在编译的时候内联函数可以直接被镶嵌到目标代码中去。而宏只是简单的替换。

内联函数有参数的类型检查,而宏没有类型检查。

inline是指嵌入代码,就是在调用函数的地方不是跳转,而是把代码直接写到那里去。对于短小的代码来说,inline增加空间消耗换来的是效率提高,这方面和宏是一模一样的,但是inline在和宏相比没有付出任何额外代价的情况下更安全,至于是否要内联函数,就需要根据实际情况来看了,内联只是一个建议。

inline一般只用于如下情况:

  1. 一个函数被不断的调用
  2. 函数只有简单的几行,且函数中不包含for,while,switch语句

注意:关键字inline必须与函数定义体放在一起才能是函数称为内联,仅仅将inline放在函数声明前不起作用。

例如:
inline void fun(int x,int y);   //这样是不能将fun函数定义为内联函数的
void fun(int a,int b)
{
    return a>b;
}


应该改为
void fun(int x,int y);
inline void fun(int a,int b)
{
    return a>b;
}

内联函数是以代码膨胀为代价的(空间换时间),仅仅省去了函数调用的开销,从而提高函数的执行效率。如果执行函数体内代码的时间相比于函数调用的开销大,那么效率的收获会很少。另外每一处内联函数的调用都要复制代码,将是程序的总代码量增大,消耗更多的内存空间。

宏在c语言里极为重要,在C++中就少用的多了。关于宏的第一规则是绝不应该去使用,除非你不得不这样做。

宏是在代码处不加任何验证(无类型检查)的简单替换,而内联函数是将代码直接插入到调用处,而减少了普通函数的调用时的资源消耗。

宏不是函数,只是在预处理阶段将程序中有些关键字替换成宏体

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值