C++ 宏与内联函数

    因为函数调用需要开销(如:保护调用者的运行环境、参数传递、执行调用指令等),所以函数调用会带来程序执行效率的下降,特别是对一些小函数的频繁调用将是程序的效率有很大的降低。

    C++提出了两种解决方法:宏、内联函数。

1. 宏

    宏是C++编译预处理系统处理的实体。

    宏定义的4种格式:

    1)#define <宏名> <文字串>

         在编译前进行使用文字串进行宏替换

          #define PI 3.14

    2)#define <宏名>(<参数表>) <文字串>

         在编译前进行使用文字串进行宏替换

          #define max(a,b) a>b?a:b

    3)#define <宏名> 

         只是告诉编译程序该宏名已经被定义,不做任何文字串替换,其用于条件编译

         如:#define OUTPUTFILE

                #ifdef OUTPUTFILE

                //输出到文件的代码

                #endif

    4)#undef <宏名> 

         用于取消宏名的编译


    不足:1)重复计算,如max((x+1),(y+2)),因为其只是进行单纯的文字替换

               2)不进行参数类型检查和转换

               3)不利于一些工具对程序的处理(如C++程序编译后,所有宏都不存在了)


2. 内联函数

    在函数定义中的返回值类型之前加上一个关键字 inline

    其作用是建议(具体有没有不一定,有些函数加上也不会作为内联函数对待,如递归函数)编译程序把该函数的函数体展开到调用点,这样就避免了函数调用的开销,从而提高了函数调用的效率。

    inline int max(int a,int b)

    {return a>b?a:b;}

    注意内联函数名具有文件作用域。

     


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值