`
eriol
  • 浏览: 405554 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

inline内联函数

    博客分类:
  • C++
阅读更多

C++ 内联函数(inline)

 

概念:内联函数是为了解决C++预处理器宏存在的问题所提出一种解决方案,用来提高函数使用效率。

 

目的:在程序编译时,编译器会将程序中出现的内联函数的调用表达式用内联函数的函数体来进行替换。由于在编译时将内联函数体中的代码替代到程序中,因此会增加目标程序代码量,进而增加空间开销,而在时间开销上不象函数调用时那么大,所以它是以目标代码的增加为代价来换取时间的节省。即inline函数是为了提高运行时间效率,但却增加了空间开销。

 

定义:

(1) 内联函数使用inline关键字定义。关键字inline 必须与函数定义体放在一起才能使函数成为内联,仅将inline 放在函数声明前面不起任何作用。

 

 

inline void function(int x); //仅仅是申明函数,没有任何效果
inline void function(int x)  //正确 
{ 
      return ++x; 
}

 

(2) 定义在类声明之中的成员函数将自动地成为内联函数,不需要inline关键字。

 

 

class point 
{ 
      int i; 
public: 
      void SetValue(int x) //内联函数 
      { 
             i = x; 
      } 
}

 

inline函数对编译器而言必须是可见的,以便它能够在调用点内展开该函数。

 

 

内联能提高函数的执行效率,但是不是所有的函数都能定义为内联函数。

 

      因为内联是以代码复制为代价,仅仅省去了函数调用的开销,从而提高函数的执行效率。如果执行函数体内代码的时间,相比于函数调用的开销较大,那么效率的收获会很少。另一方面,每一处内联函数的调用都要复制代码,将使程序的总代码量增大,消耗更多的内存空间。以下情况不宜使用内联:

(1) 如果函数体内的代码比较长,使用内联将导致内存消耗代价较高。

(2) 如果函数体内出现循环,那么执行函数体内代码的时间要比函数调用的开销大。

分享到:
评论

相关推荐

    C语言的inline内联函数的作用

    内联函数是C语言中的一种优化手段,它的主要目的是为了提高程序执行的效率。通过使用`inline`关键字,程序员向编译器发出请求,希望在编译时将函数体插入到每个调用该函数的地方,而不是在运行时通过函数调用来执行...

    内联函数inline使用实例

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

    内联函数-14.08.25

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

    内联函数体要放在头文件

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

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

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

    inline-in-iar_c.rar_iar inline 函数_iar 内联函数_msp430f4152

    在IAR C中,内联函数的定义通常使用关键字`inline`。下面我们将深入探讨如何在IAR C中使用内联函数以及它们与MSP430F4152微控制器的结合。 首先,让我们看看如何定义一个内联函数。在C语言中,内联函数的定义方式...

    内联函数笔记

    内联函数的关键字是`inline`,它可以被用于类的成员函数或者非成员函数。当在一个类的定义内部定义函数时,编译器通常会自动将其视为内联函数,无需显式使用`inline`关键字。如果在类的外部定义内联函数,则需要在...

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

    内联函数使用`inline`关键字声明,但是否真的进行内联替换是由编译器决定的。编译器会考虑函数的大小、复杂性和代码体积等因素。内联函数保留了函数的特性,比如类型检查、作用域规则以及异常处理,这使得内联函数...

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

    内联函数通过关键字`inline`声明,并且通常用于函数体较短的情况。 **优点:** - **性能优化:**内联函数可以避免普通函数调用时的额外开销,如参数压栈、保存寄存器等。 - **易于维护:**与宏不同,内联函数具有...

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

    内联函数的定义类似于普通函数,但前面会加上`inline`关键字。例如: ```c inline void f(int i, char c) { // ... } ``` 内联函数的一个重要优势是它们像普通函数一样被处理,支持类型检查和作用域规则,避免了...

    浅析MATLAB中的内联函数.pdf

    在MATLAB编程环境中,内联函数(Inline Function)是一种特殊类型的函数,它允许用户在不创建独立的M文件的情况下定义和使用函数。内联函数的名称来源于C语言中的内联函数概念,它们都旨在减少函数调用的开销,提高...

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

    内联函数的语法与普通函数相同,只是在函数定义或声明前加上`inline`关键字。例如: ```cpp inline type function (type1 parm1, type2 parm2, ... typen parmn){ 语句序列 ; } ``` 尽管内联函数能够提高效率,但...

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

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

    浅析MATLAB中的内联函数.docx

    创建内联函数是通过`inline`构造函数完成的,它可以接受一个字符串表达式作为参数,这个表达式定义了函数的行为。例如,`f = inline('t^2-3*t-4')`定义了一个与`t`相关的二次函数。内联函数有一些限制,如不能在一个...

    内联函数&类的成员函数

    内联函数(inline function)是C++中的一种优化手段,其目的是减少函数调用的开销。当一个函数被声明为内联时,编译器会在调用该函数的地方直接插入函数体的代码,从而避免了普通函数调用过程中的跳转、参数压栈、...

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

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

    宏和内联函数的区别[归类].pdf

    内联函数使用`inline`关键字声明,但编译器并不保证一定会内联展开。例如,内联函数可以这样定义: ```cpp inline int tablefunction(int I) { return I * I; } ``` 与宏相比,内联函数有以下优点: 1. **类型...

    浅谈内联函数与宏定义的区别详解

    内联函数在运行时可调试,而宏定义不可以;2.编译器会对内联函数的参数类型做安全检查或自动类型转换(同普通函数),而宏定义则不会; 3.内联函数可以访问类的成员变量,宏定义则不能; 4.在类中声明同时定义的成员...

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

    首先,我们来看内联函数(Inline Function)。内联函数是一种优化手段,它允许将函数体插入到每个调用该函数的地方,以减少函数调用时的开销。在C++中,使用`inline`关键字来声明一个函数为内联函数。例如: ```cpp...

Global site tag (gtag.js) - Google Analytics