C++-内联函数

内联函数使用方法

一般内联函数定义在头文件中 因为编译器需要找到该内联函数的定义才能进行内联 所以如果放在cpp文件中 你就需要在每一个需要使用该内联函数的文件中定义一次内联函数 多个文件中定义完全一样的内联函数不会有问题

inline int max(int a, int b)
{
	printf("内联函数");
}
//inline必须和定义在一起 不能和声明在一起 下面这样是不行的
inline void A();  
void A()   // inline 与函数定义体放在一起
{
 ...
}

为什么要使用内联函数

总结一点 就是让该函数的调用更快
调用函数比求解等价表达式要慢得多。调用函数要做很多工作:调用前要先保存寄存器,并在返回时恢复,复制实参,程序还必须转向一个新位置执行
大概就是正常在代码中调用到一个函数 需要在代码区找到该函数相应的位置 然后在那执行

inline关键字是做什么用的?

inline类似于宏替换,使用函数体替换调用处的函数名,所以他是编译的时候就替换了,省去了调用函数的开销,增快了代码的执行效率。但是又不是宏替换,inline函数是真正的函数,编译器会考虑语义。
内联函数通常就是将它在程序中的每个调用点上“内联地”展开

inline关键字在什么情况下会展开失败?

函数体内代码长度过大,包含复杂的结构控制语句(while,switch),包含内联函数本身,含有递归均会导致展开失败
只有当函数只有 10 行甚至更少时才将其定义为内联函数
一般在函数体积比较小 但时调用比较频繁的时候才会使用内联函数
虚函数和递归函数就不会被正常内联 因为这俩函数根本不应该被内联 递归是因为递归层数在编译时是位置的 所以没办法内联过去

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值