Inline内联函数简单理解

这篇具有很好参考价值的文章主要介绍了Inline内联函数简单理解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

InLine_Function

  • How to Write it?
    example->
inline void func();
inline int sum(int v1 , int v2 );
inline void func(){

    std::cout<<"func()"<<std::endl;
}
inline int sum(int v1 ,int v2){

    return v1+v2;
}
  • 特点
    • 编译器会将函数调用直接展开为函数体代码
  • 人话:
    • 直接将函数体里面的计算方法直接放到函数调用里,类似于宏替换。和#include 很像,但不相同。
    • 编译后代码体量会变大。
  • 用途
    • 因为调用普通函数需要开辟栈空间,调用完成后要回收栈空间
    • 如果是内联函数(inline function)执行是不需要开辟栈空间,不存在函数调用,所以不会有开辟和回收栈空间的过程。执行起来效率较高,减少函数调用开销,但是会增大代码体积,增加内存占用
  • 什么时候使用
    • 1.调用频繁
    • 2.代码体积不大
  • inline是建议编译器编译成内联
    • 例如递归函数就不会编译成内联函数

内联函数与宏

#define add(v1,v2) v1+v2
int main(){
    int c = add(1,2);
    std::cout<<c<<std::endl;
    getchar();
    return 0;
}

<-宏替换文章来源地址https://www.toymoban.com/news/detail-838642.html

  • 区别:
    • 内联函数相比于宏替换,具有代码提示,拥有传参能力。宏是简单文本替换!!!
      以上内容都是孩子瞎写的,请大佬指正。

到了这里,关于Inline内联函数简单理解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【跟小嘉学 Rust 编程】二十四、内联汇编(inline assembly)

    【跟小嘉学 Rust 编程】一、Rust 编程基础 【跟小嘉学 Rust 编程】二、Rust 包管理工具使用 【跟小嘉学 Rust 编程】三、Rust 的基本程序概念 【跟小嘉学 Rust 编程】四、理解 Rust 的所有权概念 【跟小嘉学 Rust 编程】五、使用结构体关联结构化数据 【跟小嘉学 Rust 编程】六、枚举

    2024年02月10日
    浏览(52)
  • 23:kotlin类和对象 -- 内联值类(Inline value classes)

    有时,将一个值包装在一个类中可以创建一个更具领域特定类型的类。然而,由于额外的堆分配,这会引入运行时开销。此外,如果包装的类型是原始类型,性能损失是显著的,因为原始类型通常由运行时进行了大量优化,而它们的包装类没有得到任何特殊处理。 为了解决这

    2024年02月03日
    浏览(43)
  • 为什么inline 函数定义在头文件.h中

    一、是不是Inline函数只能定义在.h中? 答案:不是。你可以在A.c 和 B.c里重复定义一个inline void func()函数给A.c和B.c用。 二、为什么inline函数只能定义在.h中? 答案:因为可以解决所用调用inline函数的所有.c文件反复定义该inline函数,inline函数具有局部可见性。编译器不会生成

    2024年02月10日
    浏览(55)
  • 最新版KEIL error: non-ASM statement in naked function is not supported或者 ‘__STATIC_INLINE‘

    最新的KEIL5版本使用的默认的版本6的编译器,而固件库还是支持版本5的编译器 所以下面重新选keil5的编译器,但是我这边只有version6的编译器怎么办呢 可以到如下 官网下载 右上角搜索Arm Compiler for Embedded 找到如下界面 选择红框内容选择旧版本 需要注册填写信息才能下载 h

    2024年01月25日
    浏览(54)
  • 小程序进阶-inline、block和inline-block的区别与联系

    每个html标签元素都有默认的元素类型,主要包括两大类:inline内联元素和block块元素。其他则称为可变元素,会根据上下文语境决定该元素为inline元素或者block元素。 在css里,有一个display的属性,它规定元素应该生的框的类型,可能的值很多,除inline、block,常用的有table-

    2024年02月09日
    浏览(34)
  • inline hook

    inline hook的核心是通过修改机器码改变程序的执行流程,实现跳转有很多种方式,如JMP的短跳(EB)、近跳(E9)、远跳(EA),其中短跳和进跳的的操作数是相对于EIP的偏移,其满足“目标地址 = 当前指令地址 + 指令长度 + RVA”,而远跳的操作数是一个绝对地址;又如 push+r

    2024年01月16日
    浏览(31)
  • 【C++】详解inline

    2023年8月28日,周一晚上 目录 优点 缺点 使用条件 为什么调用函数会有开销 举例说明 当使用 inline 声明一个函数时,编译器会将函数体内联到所有调用该函数的地方。 这可以提高执行效率,因为无需进行函数调用的开销。 但是,过度使用内联函数也有不利影响: 可执行文

    2024年02月11日
    浏览(40)
  • Matplotlib中的%matplotlib inline是什么

    %matplotlib是一个魔法函数(Magic Function),功能:内嵌画图。将matplotlib的图表直接嵌入到Notebook中,或使用指定的界面库显示图表(由参数指定)。inline就表示将图表嵌入到Notebook中。 IPython有一组预先定义好的魔法函数,可以通过命令行的语法形式来访问。 Magic Function分两种

    2024年02月15日
    浏览(41)
  • CSS display: inline-block;

    display: inline-block; 是一种 CSS 属性,用于设置元素的显示方式。 当你将一个元素的 display 属性设置为 inline-block 时,它将以内联块级元素的方式显示。这意味着元素会在一行上显示,并且可以设置宽度、高度、内外边距等属性,同时仍保留内联元素的特性,可以与其他元素在同

    2024年02月12日
    浏览(46)
  • [C++] C++基础之inline的使用

    总的使用原则: 慎重使用inline,一般可以考虑不用inline,只在能有效减少调用耗时的情况下使用inline;实际编程时最初的原则是不要内联任何函数,除非函数确实很小很简单。 当一个小的函数被非常频繁的调用时,我们为了减少不必要的计算开销,会将其声明为inline,这样

    2024年04月16日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包