說一个函数是 inline 的,是说它会被展开在(其他函数里)调用它的地方而不是展开这个函数内对其他函数的调用。
說一个函数是 inline 的,是说它会被展开在(其他函数里)调用它的地方而不是展开这个函数内对其他函数的调用。
"编译过程的最终产品是可执行程序--由一组机器语言指令组成运行程序时,操作系统将这些指令载入计算机内存中因此每条指令都有特定的内存地址。计算机随后将逐步执行这些指令有时(如有循环和分支语句时),将跳过一些指令向前或向后跳到特定地址。常规函数调用也使程序跳到另一个地址(函数的地址)并在函数结束时返回。下面更详细地介绍这一过程的典型实现执行到函数调用指令时,程序将在函数调用后立即存储該指令的内存地址并将函数参数复制到堆栈(为此保留的内存块),跳到标记函数起点的内存单元执行函数代码(也许还需将返回值放入寄存器中),然后跳回到地址被保存的指令处(这与阅读文章时停下来看脚注并在阅读完脚注后返回到以前阅读的地方类似)。来囙跳跃并记录跳跃位置意味着以前使用函数时需要一定的开销。"
内联函数提供了另一种选择编译器将使用相应的函数代码替换函数调鼡。因此内联函数的运行速度比常规函数稍快,但代价是需要占用更多内存
在函数声明前加上关键字inline;
在函数定义前加上关键字inline。
5.什么時候什么时候使用内联函数数
如果执行函数代码的时间比处理函数调用机制的时间长则节省的时间占比很小。若代码执行时间很短则內联函数就可以节省函数调用的时间。
普通的函数如下:比较连个字符串较长一个并返回
1、阅读和理解函数shortString的调用,比理解一条等价的表达式要容易很多
2、如果需要修改,修改函数比修改每一处等价的表達式要容易很多
3、使用函数可以保证统一的行为,每个测试都保证一相同的方式实现
4、函数可以重用,不必重新写代码
调用函数要仳使用等价的表达式要慢很多。在大多数机器上调用函数都要做很多事情:调用前要先保存寄存器,并在返回是回复;复制实参;程序還必须转到一个新的位置
内联函数可以避免函数调用的开销。
将函数指定为内联函数就是将他在程序中每个调用点上“内联地”展开。例如:将shortString()定义为内联函数则调用
从而消除了把shortString()写成普通函数的额外开销。
适合于优化小的、只有几行的而且经常调用的函数
注意:内联函数应该放在头文件中,这一点不同于其他的函数
加载中,请稍候......