inline函数的总结

在函数返回类型前加上关键字inline就可以将函数指定为内联函数:

1 inline const string& shortString(const string &s1, const string &s2) {
2     return s1.size() < s2.size() ? s1 : s2;
3 }

函数指定为内联函数,(通常)就是将它在程序调用点上”内联地“展开。假设我们将shortString定义为内联函数,则调用:

1 cout<<shortString(s1,s2)<<endl;

在编译时展开为:

1 cout<<(s1.size() < s2.sizre()  ? s1 : s2)<<endl;

内联函数的优点: 

  可以避免调用函数的开销

内联函数的缺点:

  由于将对函数的每一个调用都以函数本体替换之。所以会增加目标代码的大小。造成代码膨胀。这将导致程序体积太大,不利于在内存不大的机器上运行。

时间: 2024-08-27 13:08:27

inline函数的总结的相关文章

inline函数和一般的函数有什么不同

1.比如: 1 int g(int x) 2 { 3 return x + x; 4 } 5 6 int f() 7 { 8 return g(); 9 } 这样f会调用g,然后g返回x + x给f,然后f继续把那个值返回给调用者. 如果g是inline的话.f会被直接编译成. 1 int f() 2 { 3 return x + x; 4 } 相当于把g执行的操作直接融合到f里.这样减少了调用g消耗的时间,但同时也增大了f的尺寸. 这就是inline函数,也就是所谓的内联函数. 2.但是现在不

gcc 编译器对 inline 函数的支持

C99版的C语言引入了inline关键字开始支持inline 函数,在这之前传统的C语言(C89)是没有inline 关键字的,也不支持inline 函数.不过大多数 C89 的编译器都将inline作为一种附加特性早早的就加进去了.gcc 也不例外,不过gcc增加inline特性时C99还没定型,gcc中inline 的语意与C99也有些许的区别.这里就主要说说gcc 中的inline 特性. 另外,本文只讨论C语言,C++标准中很早就支持inline,不过inline的语意C和C++ 是有细

C++经典问答 inline 函数

inline函数的作用是什么? 在某些情况下,inline函数能使受计算量限制的应用程序运行的更快. 从广义上讲,inline函数的背后的思想是在调用函数的地方插入该函数的代码. 关键字"inline"和"inlined"函数之间的联系是什么? 用关键字inline修饰的函数可能不被直接插入,而直接插入的函数也可能不被标明为inline,被直接插入的惟一确定方式是根本不存在的! 关于直接插入有什么特殊的规则吗? 1.任何包含inline函数用法的源文件都必须包含该函

inline函数的使用方法

 inline关键字用来定义一个类的内联函数,引入它的主要原因是用它替代C中表达式形式的宏定义. 表达式形式的宏定义如下: #define ExpressionName(Var1,Var2) ((Var1)+(Var2))*((Var1)-(Var2)) 为什么要取代这种形式呢,且听我道来: 1. 首先谈一下在C中使用这种形式宏定义的原因,C语言是一个效率很高的语言,这种宏定义在形式及使用上像一个函数,但它使用预处理器实现,没有了参数压栈,代码生成等一系列的操作,因此,效率很高,这是它在C中

c++ inline函数

ref:http://www.cnblogs.com/berry/articles/1582702.html (一)inline函数(摘自C++ Primer的第三版) 在函数声明或定义中函数返回类型前加上关键字inline即把min()指定为内联. inline int min(int first, int secend) {/****/}; inline 函数对编译器而言必须是可见的,以便它能够在调用点内展开该函数.与非inline函数不同的是,inline函数必须在调用该函数的每个文本文件

inline函数

在C&C++中一.inline关键字用来定义一个类的内联函数,引入它的主要原因是用它替代C中表达式形式的宏定义.表达式形式的宏定义一例:#define ExpressionName(Var1,Var2) ((Var1)+(Var2))*((Var1)-(Var2))取代这种形式的原因如下:1. C中使用define这种形式宏定义的原因是因为,C语言是一个效率很高的语言,这种宏定义在形式及使用上像一个函数,但它使用预处理器实现,没有了参数压栈,代码生成等 一系列的操作,因此,效率很高,这是它在C中

C++ inline 函数

(一)inline函数(摘自C++ Primer的第三版) 在函数声明或定义中函数返回类型前加上关键字inline即把min()指定为内联. inline int min(int first, int secend) {/****/}; inline 函数对编译器而言必须是可见的,以便它能够在调用点内展开该函数.与非inline函数不同的是,inline函数必须在调用该函数的每个文本文件中定义.当然,对于同一程序的不同文件,如果inline函数出现的话,其定义必须相同.对于由两个文件comput

C++中inline函数

(一)inline函数(摘自C++ Primer的第三版) 在函数声明或定义中函数返回类型前加上关键字inline即把min()指定为内联. inline int min(int first, int secend) {/****/}; inline 函数对编译器而言必须是可见的,以便它能够在调用点内展开该函数.与非inline函数不同的是,inline函数必须在调用该函数的每个文本文件中定义.当然,对于同一程序的不同文件,如果inline函数出现的话,其定义必须相同.对于由两个文件comput

关于代码优化中inline函数的使用

先说说内联函数的优点:    将函数改写成inline函数, 可以避免当函数被调用时所发生的堆栈操作, 这自然可以提高代码的执行效率 一般将inline函数写在头文件中, 并且建议将其写在类结构之外, 也就是类结构定义的下面, 而不是写在类结构的里面.当然写在里面也没什么不行, 只是如果写在外面的话, 代码看起来更为整洁, 自然也会增加代码的易读性. 达到一目而了然. 1. 应该使用inline函数的情况:        当函数体比较小, 比如只有两三行, 可以考虑改写成inline函数    

C++中的Inline函数

在大多数机器上,函数调用does a lot of work:在调用函数前保存寄存器,调用结束后利用寄存器恢复现场:需要复制函数参数:程序跳转到新的位置执行... 内敛函数(inline function)则没有这个问题,简单的我们可以这样理解:Inline即“In line” 为什么说“In line”呢,先看内敛函数的声明: // inline version: find the shorter of two strings inline const string & shorterStri