内联的优缺点

news/2024/5/20 5:30:49 标签: 内联函数

定义和机制

内联函数是指用inline关键字修饰的函数。在类内定义的函数被默认成内联函数内联函数从源代码层看,有函数的结构,而在编译后,却不具备函数的性质。
内联函数不是在调用时发生控制转移,而是在编译时将函数体嵌入在每一个调用处。编译时,类似宏替换,使用函数体替换调用处的函数名。一般在代码中用inline修饰,但是能否形成内联函数,需要看编译器对该函数定义的具体处理。

优点

1、内联函数,编译器将会根据上下文环境进一步深度优化代码,而这一点是普通函数无法达到的作用
2、省略了函数调用压入堆栈和弹出堆栈所用的时间
3、常用于高频使用的函数,可以提高时间

缺点

1、编译之后代码量会偏多,内联可以说是一种以空间换取时间的方法。牺牲一定的空间来加速运行时间。增加的代码量取决于函数调用次数和函数本身的大小
2、内联函数实现的更改往往并不可以保持链接兼容性,也就是说这样的更改需要用户重新编译他们的代码

综述与注意

1、inline实现其实就是对编译器的一种请求,因此编译器完全有权利取消一个函数的内联请求。一个好的编译器会根据函数定义体,自动取消不值得的内联,一般编译器会自动过滤选择一些短小而简单的函数来内联
2、使用内联函数的时候要注意:
(1)递归函数不能定义为内联函数
(2)内联函数一般适合于不存在while和switch等复杂的结构且只有1~5条语句的小函数上,否则编译系统将该函数视为普通函数。
(3)内联函数只能先定义后使用,否则编译系统也会把它认为是普通函数。
(4)对内联函数不能进行异常的接口声明。


http://www.niftyadmin.cn/n/1233889.html

相关文章

函数最值题目及答案_两道好题———三角函数模型中求最值

题目呈现一分步解析首先从已知式着手,观察已知等式结构,很容易想到正弦定理角化边这个转化转化到这,自然想到结合余弦定理,进一步变形推导做到这一步,下面的处理应该是解题的关键,也是命题者的意图所在。到…

2021CCF推荐国际学术会议A类及相关领域介绍

前言:CCF推荐会议包括以下分类● 计算机体系结构/并行与分布计算/存储系统● 计算机网络● 网络与信息安全● 软件工程/系统软件/程序设计语言● 数据库/数据挖掘/内容检索● 计算机科学理论● 计算机图形学与多媒体● 人工智能● 人机交互与普适计算● 交叉/综合/新…

Endnote插入文献与文献管理

介绍如何使用endnote进行文献管理 一、导入Endnote 以这篇文章为例: M. Nasr, R. Shokri and A. Houmansadr, “Comprehensive Privacy Analysis of Deep Learning: Passive and Active White-box Inference Attacks against Centralized and Federated Learning,…

C++的“虚”应用

纯虚函数 关于什么是C的纯虚函数,这里不在累赘阐述,可以参见百度。一句话说其结构就是virtual fun()0,纯虚函数的作用主要是实现更抽象化的接口。可以说是一种提高编程效率的机制,他的目的是告诉用户这样的…

1w存银行一年多少利息_每年拿出1万元存在银行,5年之后本金和利息一共是多少?...

好消息!8月一开始就告别了最让大家头疼的——水逆!饱受其害而过得心慌慌的小伙伴,可以开始准备让悬着的心、吊着的胆“软着陆”了。而8月值得一提的好消息还有:木星将顺行在射手座,希望就像是风雨过后的彩虹&#xff0…

提高codeing运行时间效率

使用现有著名高效算法通过内联inline增加代码量来节省运行时间函数采用返回引用而不是返回值,因为返回值需要高昂的拷贝开销减少空闲存储空间(new和malloc申请内存)和堆栈空间使用尽可能快地释放空闲资源小心处理static静态对象,使…

keras.optimizers优化器中文文档

优化器optimizers 优化器是编译Keras模型必要的两个参数之一 model Sequential() model.add(Dense(64, inituniform, input_dim10)) model.add(Activation(tanh)) model.add(Activation(softmax))sgd SGD(lr0.01, decay1e-6, momentum0.9, nesterovTrue) model.compile(los…

matlab判断double_生成对抗网络(GAN)及其MATLAB实现

本文讲解生成对抗网络的相关知识及其MATLAB实现。1)GAN的初步理解GAN的思想是是一种二人博弈思想:博弈双方的利益之和是一个常数。比如两个人掰手腕,假设总空间是一定的。你的力气大一点,那你就得到的空间多一点,我得到的空间就少…