inline和define的特点和区别

本文详细介绍了C++中内联函数的概念及其使用注意事项,包括如何定义内联函数及其实现原理。此外,还探讨了宏定义的使用方式及在实际编程中应注意的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、内联函数inline
    函数调用时都会产生一些额外的开销,主要是系统栈的保护、代码的传递、系统栈的恢复以及参数传递等。对于那些函数体很小、执行时间很短但又频繁使用的函数,定义为内联函数提高函数调用的效率。内联函数不是在调用时发生转移,而是在编译时将函数体嵌入到每个内联函数调用处。这样就省去了参数传递、系统栈的保护与恢复等的时间开销。

    语法形式:<inline><类型标识符><被调函数名>(含类型说明的形参表)

                         {
                                函数体
                         }

    注意:

   1.内联函数以目标代码的增加为代价来换取时间的节省。

   2.内联函数在编译时被替换。

   3.内联函数一般不能含有循环语句和switch语句。

   4.内联函数的定义必须出现在第一次被调用之前。

   5.对内联函数不能进行异常接口说明。

    如果违背了上述注意点中的任意一项,编译程序就会无视关键字inline的存在,像处理一般函数一样处理,不生成扩展代码。

二、#define

#define SQR(x) x*x
int main()
{
    int a,k=3;
    a=++SQR(k+1);
    printf("%d\n",a);
 }
打印出的结果:++k+1*k+1=4+4+1=9

 注意:

1.在宏扩展时,只对宏名做简单的代换,不做任何计算,也不做任何语法检查。

2.宏由编译预处理程序处理。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值