`

C++中的内联函数inline

 
阅读更多

  在c++中,为了解决一些频繁调用的小函数大量消耗栈空间或者是叫栈内存的问题,特别的引入了inline修饰符,表示为内联函数。
  可能说到这里,很多人还不明白什么是栈空间,其实栈空间就是指放置程序的局部数据也就是函数内数据的内存空间,在系统下,栈空间是有限的,如果频繁大量的使用就会造成因栈空间不足所造成的程序出错的问题,函数的死循环递归调用的最终结果就是导致栈内存空间枯竭。
  下面我们来看一个例子:

#include <iostream>
#include <string>
using namespace std;
 
inline string dbtest(int a); //函数原形声明为inline即:内联函数
 
 
void main() {
    for (int i=1;i<=10;i++)
    {
        cout << i << ":" << dbtest(i) << endl;
    }
    cin.get();
 
}
 
string dbtest(int a)//这里不用再次inline,当然加上inline也是不会出错的
{
    return (a%2>0)?"奇":"偶";
 
}

 

inline的原理

  上面的例子就是标准的内联函数的用法,使用inline修饰带来的好处我们表面看不出来,其实在内部的工作就是在每个for循环的内部所有调用dbtest(i)的地方都换成了(i%2>0)?"奇":"偶"这样就避免了频繁调用函数对栈内存重复开辟所带来的消耗。

 

inline的限制
  说到这里很多人可能会问,既然inline这么好,还不如把所谓的函数都声明成inline,嗯,这个问题是要注意的,inline的使用是有所限制的,inline只适合函数体内代码简单的函数使用,不能包含复杂的结构控制语句例如while switch,并且不能内联函数本身不能是直接递归函数(自己内部还调用自己的函数)。


inline vs. #define
  说到这里我们不得不说一下在c语言中广泛被使用的#define语句,是的define的确也可以做到inline的这些工作,但是define是会产生副作用的,尤其是不同类型参数所导致的错误,由此可见inline有更强的约束性和能够让编译器检查出更多错误的特性,在c++中是不推荐使用define的

分享到:
评论

相关推荐

    内联函数inline使用实例

    内联函数(inline)在C++编程语言中是一种优化手段,用于提高程序的运行效率。它的主要作用是在编译期间将函数体插入到每个调用该函数的地方,从而避免了函数调用时的开销,如函数调用的压栈、跳转以及返回等过程。...

    c++中的内联函数inline用法实例

    "C++中的内联函数inline用法实例" C++中的内联函数是一种特殊的函数类型,它可以在编译期间将函数体替换到调用处,以减少函数调用时的开销。下面我们将详细介绍C++中的内联函数inline用法实例,以及相关知识点。 ...

    三内联函数inlinefunction四引用和数值传递方式具体PPT课件.pptx

    内联函数是C++中一个重要的优化手段,用于提高程序执行效率。在C++中,`inline`关键字用来修饰函数,提示编译器尽可能地在调用点将函数体展开,而不是通过传统的函数调用机制。这样可以避免函数调用时的开销,如栈...

    内联函数-14.08.25

    内联函数是C++语言中的一个重要特性,它主要用于提高程序的运行效率。通过在函数调用处直接嵌入函数体,内联函数避免了传统函数调用带来的额外开销(如参数压栈、返回地址保存等)。本篇文章将详细介绍内联函数的...

    内联函数体要放在头文件

    内联函数(inline function)是C++中的一种特殊函数,它允许编译器在编译时将函数调用替换为函数体本身的代码,从而避免了通常的函数调用机制(如参数压栈、返回地址保存等)所带来的额外开销。这种替换过程称为内联...

    三内联函数inlinefunction四引用和数值传递方式具体PPT学习教案.pptx

    在C++中,使用`inline`关键字来声明一个函数为内联函数。例如: ```cpp inline void swap(int x, int y) { int t = x; x = y; y = t; } ``` 内联函数的主要目的是避免函数调用时的栈空间管理和返回地址的保存,这...

    如何使用内联函数,请看这个资料

    内联函数(inline function)是 C++ 语言中的一种特殊函数,具有优缺点,今天我们将深入探究内联函数的定义格式、编程风格、优缺点、使用注意事项,以及与宏的区别。 首先,内联函数的定义格式是将关键字 `inline` ...

    c++内联函数(inline)使用详解

    总的来说,内联函数是C++中提高效率的一种手段,它可以替代预处理宏,同时避免宏的缺点,提供更安全、可维护的代码。然而,使用内联函数时需要注意其限制,避免不必要的代码膨胀,以达到最佳的性能和代码质量。

    C语言中的内联函数(inline)与宏定义(#define)详细解析

    内联函数是C++引入的概念,尽管也可以在C语言中使用。它在编译时将函数体插入到每个调用点,消除了函数调用的开销,从而提高了执行效率。内联函数的定义类似于普通函数,但前面会加上`inline`关键字。例如: ```c ...

    c++中的宏、内联函数和宏的比较

    ### C++中的宏、内联函数和宏的比较 在C++编程中,宏和内联函数是提高代码效率和可读性的两种常见方法。它们各自有着不同的应用场景和特点,了解这些差异对于编写高质量的C++代码至关重要。 #### 宏(Macro) 宏...

    内联函数笔记

    内联函数是C++编程语言中的一种特性,它主要用于提高程序执行效率,特别是在频繁调用的小型函数中。内联函数的设计目标是替代C语言中的宏定义,克服宏定义的一些弊端,同时保留其效率优势。 在C语言中,宏定义(如`...

    VC中内联函数的定义和案例共3页.pdf.zip

    内联函数是C++编程语言中的一个重要特性,它在Visual C++(简称VC)环境中被广泛应用。内联函数的主要目的是为了提高程序的运行效率,通过将函数体插入到调用处来避免函数调用时的开销。这篇文档“VC中内联函数的...

    内联函数和宏的区别的分析与总结

    内联函数和宏在C++编程语言中是两种常见的代码优化技术,它们都可以用来替代函数调用,以减少函数调用带来的开销。然而,两者在实现方式、编译过程和功能特性上有着显著的区别。 首先,我们来看内联函数。内联函数...

    详解C++中的内联函数和函数重载

    这种在函数调用处直接嵌入函数体的函数称为内联函数(inline function),又称内嵌函数或内嵌函数。 指定内联函数的方法很简单,只需要在定义函数时增加 inline 关键字。 注意:是在函数定义时增加 inline 关键字,...

    C++ 实验1 重载函数和内联函数的应用 

    在C++编程语言中,重载函数和内联函数是两个重要的概念,它们极大地提高了代码的可读性和执行效率。本实验旨在通过实际操作来帮助学生深入理解和掌握这两个概念。 首先,我们来看重载函数。函数重载允许在同一作用...

    计算机程序设计(C++)计算机程序设计(C++)04-6.2内联函数_25_25.pptx

    总的来说,内联函数是C++中的一种重要优化手段,它能够提升程序运行效率,但也需要谨慎使用,以防止过度增大程序体积。在实际编程中,开发者应根据具体需求和函数特性来判断是否使用内联函数,并合理控制其规模和...

    C++内联汇编示例

    C++内联汇编是一种将汇编语言代码嵌入到C++程序中的技术,它允许开发者在高级语言中直接插入低级操作,以优化特定性能关键的代码段或解决特定平台的问题。本工程通过一系列示例,展示了如何在C++程序中使用内联汇编...

    52_虚函数可以声明为inline吗1

    在C++编程语言中,内联函数(inline)和虚函数(virtual)是两种非常重要的特性,它们分别用于优化性能和实现多态性。然而,它们的性质和使用场景是不同的,这导致了某些限制,比如虚函数通常不建议声明为内联。下面...

Global site tag (gtag.js) - Google Analytics