C++笔记8--内联函数(inline function)

来源:互联网 发布:mac访问局域网共享 编辑:程序博客网 时间:2024/05/12 12:44

C++笔记8--内联函数(inline function)

                                                                                                                              声明:本文档由王桂林老师编写的C++课件,经整理而出。

内联
c 语言中有宏函数的概念。 宏函数的特点是内嵌到调用代码中去, 避免了函数调用的开销。
但是由于宏函数的处理发生在预处理阶段,缺失了语法检测和有可能带来的语意差错。
C++提供了 inline 关键字,实现了真正的内嵌。
宏函数 VS inline 函数

#include <iostream>#include <string.h>using namespace std;#if 宏函数优点:内嵌代码,辟免压栈与出栈的开销缺点:代码替换,易使生成代码体积变大,易产生逻辑错误,无类型检查#endif#define SQR(x) ((x)*(x))#if inline函数优点:高度抽象,避免重复开发,类型检查缺点:压栈与出栈,带来开销#endifinline int sqr(int x){    return x*x;}#endifint main(){    int i=0;    while(i<5)    {        // printf("%d\n",SQR(i++));        printf("%d\n",sqr(i++));    }    return 0;}

说明
优点:避免调用时的额外开销(入栈与出栈操作)
代价:由于内联函数的函数体在代码段中会出现多个“副本”,因此会增加代码段的空间。
本质:以牺牲代码段空间为代价,提高程序的运行时间的效率。
适用场景:函数体很“小”,且被“频繁”调用。

0 0
原创粉丝点击