网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

<二>理解inline内联函数

如下代码

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:主机域名、虚拟空间、营销软件、网站建设、牡丹江网站维护、网站推广。

using namespace std;

int sum(int a,int b){
return a + b;
}
int main(){
int a =1;
int b =2;
int ret =sum(a,b);
return 0;
}

上面sum函数调用,会涉及到参数压栈,函数栈帧的开辟及回退过程,因此在函数调用的过程时候是会有开销的
sum函数的核心功能转成汇编指令即 1:将x的值放入寄存器 2:再将y的值和寄存器内容相加
为了使用这个非常简单的功能,我们需要做许多额外的动作,例如压函数参数入栈,压下一条执行指令地址入栈,将main函数的栈底指针压栈,为sum 函数开辟栈帧,
这一些系列动作产生的汇编指令远远多于x+y产生的指令, 这个就是说函数的调用开销远远大于函数功能指令,这种情况下我们可以考虑内联函数

如下代码

using namespace std;

inline int sum(int a,int b){
return a + b;
}
int main(){
int a =1;
int b =2;
int ret =sum(a,b);
return 0;
}
inline内联函数:在函数编译的过程中,就不会产生函数调用开销了,在函数的调用点直接把函数的代码进行展开处理了,
同时inline函数不再产生相应的函数符号

但是注意:不是所有的内联函数都会被编译器处理成内联函数,比如递归

所以inline只是建议编译器把这个函数处理成内联函数,结果取决于编译器,有没有内联成功可以 看看符号表,函数是否产生符号.

debug版本下,inline是不起作用,只有在release版本下才起作用

内联函数于普通函数有什么区别?
1:普通函数的调用会有函数开销
2:内联函数在编译的过程中,编译器会将函数代码做展开处理
3:如果内联成功,函数将不再产生符号表


当前文章:<二>理解inline内联函数
网页地址:http://bjjierui.cn/article/dsoiiop.html

其他资讯