美文网首页
[初学C++]C++的拓展--inline内联函数

[初学C++]C++的拓展--inline内联函数

作者: Mr_Doer | 来源:发表于2018-12-06 00:22 被阅读9次

C语言中有宏函数的概念。宏函数的特点是内嵌到调用代码中去,避免了函数调用的开销。但是由于宏函数的处理发生在预处理阶段,缺失了语法检测和有可能带来的语意差错

  1. 内联函数声明时inline关键字必须和函数定义结合在一起,否则编译器会直接忽略内联请求。
  2. C++编译器直接将函数体插入在函数调用的地方。
  3. 内联函数没有普通函数调用时的额外开销(压栈,跳转,返回)。
  4. 内联函数是一种特殊的函数,具有普通函数的特征(参数检查,返回类型等)。
  5. 内联函数由编译器处理,直接将编译后的函数体插入调用的地方,代码片段由预处理器处理,进行简单的文本替换,没有任何编译过程。
  6. C++中内联编译的限制:

不能存在任何形式的循环语句
不能存在过多的条件判断语句
函数体不能过于庞大
不能对函数进行取址操作
函数内联声明必须在调用语句之前

  1. 编译器对于内联函数的限制并不是绝对的,内联函数相对于普通函数的优势只是省去了函数调用时压栈,跳转和返回的开销。因此,当函数体的执行开销远大于压栈,跳转和返回所用的开销时,那么内联将无意义。

优点:避免调用时的额外开销(入栈与出栈操作)
代价:由于内联函数的函数体在代码段中会出现多个“副本”,因此会增加代码段的空间。
本质:以牺牲代码段空间为代价,提高程序的运行时间的效率。
适用场景:函数体很“小”,且被“频繁”调用。

相关文章

  • [初学C++]C++的拓展--inline内联函数

    C语言中有宏函数的概念。宏函数的特点是内嵌到调用代码中去,避免了函数调用的开销。但是由于宏函数的处理发生在预处理阶...

  • 第一周(Geek Band)

    C++实现数据和函数的封装 C++面向对象(ObjectOriented) 基本格式 Inline内联函数关键字 ...

  • 高质量C++编程指南 ----C++函数的高级特性

    8. C++函数的高级特性 对比于C 语言的函数,C++增加了重载(overloaded)、内联(inline)、...

  • ★ 学习笔记:《iOS高级:Swift入门精讲②》第一节 Swi

    前言:本篇仅为视频学习笔记 内联函数 (Inline Function)内联函数在C++这个函数里是有的,那么在s...

  • C++内联函数与C语言函数宏

    C++内联函数 什么是内联函数? 在函数的声明和定义前加一个 inline 关键字,这个函数就是内联函数。 通常会...

  • C++基础

    C++ readme 避免头文件重复定义, extern C的用法: 内联函数: inline function ...

  • iOS开发中的内联函数

    1、内联函数 内联函数(又被称为在线函数或编译时期展开函数)是指在用inline修饰的函数(这里指的是C++或者C...

  • C++内联函数inline

    C++内联函数inlineC++ 内联函数是通常与类一起使用。如果一个函数是内联的,那么在编译时,编译器会把该函数...

  • c++内联函数inline

    inline概念 在c++中,函数调用是会产生额外的时间开销的,如果函数本身代码很短,执行很快,并且该函数被反复调...

  • c++函数内联函数 inline

    内联函数用于调用次数多,且实现简单。可以选择在类的声明中直接定义函数使得其成为内联函数,或者在类的实现中使用inl...

网友评论

      本文标题:[初学C++]C++的拓展--inline内联函数

      本文链接:https://www.haomeiwen.com/subject/qmwgcqtx.html