内联函数

C++中对宏的使用已经处处限制,并提倡使用内联函数。
编译器对宏的处理是在预处理器阶段,然而预处理器宏存在了一些问题,比如没有安全检查,行为容易混淆。
在C++中,任何在类中定义的函数自动成为内联函数,你也可以使用inline关键在在外面定义函数前面使之成为内滥函数。
内联函数为何有效?
对于任何函数,编译器在它的符号表中放入函数类型(即包括名字、函数原型、参数类型已经返回类型)的信息。对于内联函数,编译器还将其代码也放入到符号表中。
在调用一个内联函数时,编译器首先确保调用正确。当所有的函数类型的信息符合调用的话,内联函数代码就会直接替换函数调用,消除了调用的开销,从而带来了效率。
当然,不要以为内联函数就是万能的。假如函数太复杂,编译器将不能执行内联。这种情况下,编译器将会以普通函数对待。因为如果使用内联的话,调用函数的开销并没有得到多大的较少,反而代码的提起在没有任何人注意的情况下膨胀。
也并非所有地方的宏都停止使用。这里有三个地方:字符串定义,字符串串联和标志粘贴。
比如:
#define DEBUG(X) cout<<#X<<"="<<X<<endl
#define FIELD(A) char * A##_string;int A##_size

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值