内联函数

原创 2013年12月03日 20:16:35

1. 内联函数避免函数调用的开销


      将函数指定为内联函数,就是将它在程序中每个调用点上“内敛地”展开。假设我们将 shorterString 定义为内联函数,则调用:


                  cout  <<   shorterString(s1,s2)  << endl;


     在编译的时候将展开为:

                  count   <<  (s1.size()  < s2.size() ? s1 :s2) << endl;

     从而消除了把 shorterString 写成函数的额外执行开销。


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


      inline const string & shorterString(const string &s1,const string &string &s2)

      {

           return  s1.size() < s2.size() ? s1 : s2;

      }


      一般来说,内联机制适用于优化小的、只有几行的而且经常被调用的函数。大多数的编译器都不支持递归函数的内联。一个1200行的函数也不太可能在调用点内联展开。


2.把内联函数放入头文件

   内联函数应该在头文件中定义,这一点不同于其他函数。


    内联函数的定义对编译器而言必须是可见的,以便编译器能够在调用点内联展开该函数的代码。此时,仅有函数原型是不够的!


     内联函数可能要在程序中定义不止一次,只要内联函数的定义在某个源文件中只出现一次,而且在所有源文件中,其定义必须是完全相同的。把内联函数的定义放在头文件中,可以确保在调用函数时所使用的定义是相同的,并且保证在调用点该函数的定义对编译器可见。


 温馨提示:在头文件中加入或修改内联函数时,使用了该头文件的所有原文件都必须重新编译!

内联函数(inline)总结

1:定义:       它们看起来象函数,运作起来象函数,比宏(macro)要好得多,使用时还不需要承担函数调用的开销。当内联一个函数时,编译器可以对函数体执行特定环境下的优化工作。这样的优化对"正...
  • a623891391
  • a623891391
  • 2016年01月30日 20:15
  • 11662

c++ 内联函数 (讲解的TM真好)

1.  内联函数 在C++中我们通常定义以下函数来求两个整数的最大值: 复制代码 代码如下: int max(int a, int b) {  return a > b ? a : b;...
  • u011327981
  • u011327981
  • 2016年01月28日 16:49
  • 17757

题目:什么是内联函数

一、什么叫inline函数?  inline(小心,不是online),翻译成“内联”或“内嵌”。意指:当编译器发现某段代码在调用一个内联函数时,它不是去调用该函数,而是将该函数的代码,整段插入到当...
  • lanmolei814
  • lanmolei814
  • 2015年03月19日 11:03
  • 1923

内联函数是怎么提高效率的

C++和C99均支持内联函数inline,按这个名称的意思应该是“在字里行间展开”,内联函数会在它被调用的位置展开 。 讨论之前,我们先来看一个故事:实验室搬至六楼,小件器件特别多,一同学正一件一件地...
  • yeswenqian
  • yeswenqian
  • 2013年12月09日 17:59
  • 1507

面试---内联函数和宏定义的区别

用内联函数取代宏:1.内联函数在运行时可调试,而宏定义不可以; 2.编译器会对内联函数的参数类型做安全检查或自动类型转换(同普通函数),而宏定 义则不会; 3.内联函数可以访问类的成员变量,宏定义则...
  • will130
  • will130
  • 2015年09月24日 15:58
  • 1229

iOS - 内联函数简述

最近看公司的项目 , 里面很多的static inline 修饰的函数 , 一脸懵比的我 , 只好百度百度 … 然后大致整理了下. 什么是内联函数 ? 内联函数也是函数 , 只是用 inline修饰...
  • coderMy
  • coderMy
  • 2016年10月24日 11:45
  • 148

C++中宏定义和内联函数区别

1. 宏代码不是函数
  • cgl1079743846
  • cgl1079743846
  • 2014年05月27日 00:45
  • 2337

MATLAB函数句柄(@),feval与内连函数(inline)

转载地址:http://www.cnblogs.com/begtostudy/archive/2012/06/27/2565920.html MATLAB函数句柄 函数句柄(Functio...
  • hzhaly
  • hzhaly
  • 2014年01月07日 16:22
  • 3587

内联函数、模板函数 之于头文件

本文转自CSDN 一、基本说明 C++标准中提到,一个编译单元[translationunit]是指一个.cpp文件以及它所include的所有.h文件,.h文件里的代码将会被扩展到包...
  • guoxiaoqian8028
  • guoxiaoqian8028
  • 2014年06月12日 13:10
  • 780

内联函数的声明和定义

内联函数的声明和定义 一、什么叫inline函数?  inline(小心,不是online),翻译成“内联”或“内嵌”。意指:当编译器发现某段代码在调用一个内联函数时,它不是去调用该函数,而...
  • yippeelyl
  • yippeelyl
  • 2015年05月12日 09:51
  • 1276
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:内联函数
举报原因:
原因补充:

(最多只允许输入30个字)