首页 > 学院 > 开发设计 > 正文

08--inline内联函数和宏替换

2019-11-08 02:23:20
字体:
来源:转载
供稿:网友

1 inline内联函数

一般函数在进行调用时,要将程序执行权转到被调用函数中,然后再返回到调用它的函数中,而内联函数在调用时,是将调用表达式用内联函数体来替换,而不是定义在另一个函数体内(也就是编译器很生硬的将内联函数里面的执行语句“搬”到调用的地方),所以内联函数在调用时不发生控制权转移。

注意:

类 内部实现的函数都是内联函数,可以不用inline定义类 外部定义的函数必须加inline定义

对于内联函数,记住下面的结论即可:

结论中的第2条:内联函数只是一种请求,编译器不一定不一定允许这种请求,换句话说,编译系统并非对内联函数必须使用内联,而是根据具体情况决定。

2 内联函数和宏替换的区别对比

由图可以发现,使用++a作为函数参数,使得宏替换和内联函数出现了2种截然不同的结果。

宏替换时,编译器非常机械的将2个变量进行替换,在此题的三目运算符中,第一个判断过后,a又再加了一次,因此得到的c也是3。

所以,一般情况下,尽量不要使用++a这种作为函数参数。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表