现在的位置: 首页 > 综合 > 正文

【C++复习五】inline和宏

2014年01月13日 ⁄ 综合 ⁄ 共 494字 ⁄ 字号 评论关闭

inline函数式C++引入的,C中是没有这个概念的

这两者有相同的地方却又不同

1、普通的函数会在调用的时候有个压栈的操作,待函数执行完会pop出栈中内容继续执行,不知道这么理解对不对,希望看到的前辈们能够指正

但是inline函数和宏就不同,这两者会在调用的时候直接把代码带入到对应的位置,所以就减少了压栈的操作,提高性能

2、inline可以作为成员函数,但是宏却不行;宏可以定义变量,inline却只是用来修饰函数的,不可以用来定义变量

3、inline是一个真正的函数,会执行类型检查,返回者检查等操作,它是一个运行期的函数,而宏只是简单的带入,不会执行任何检查,是预编译期常量,就是说宏的内容会在编译前的时候就带入。

例如

#define fun(a,b) a*b; 代表了求a,b的乘积,如过a=c+d;b=x+y;那么值又会是什么呢,由于宏只是简单展开,所以结果会是c+d*x+y,并不是我们期望的(c+d)*(x+y),所以我们使用宏的时候应该尽可能的加括号,保证不会出现类似情况。

以上内容如有错误或者不完善,烦请大家指出,一起讨论,共同进步,谢谢(因为这段内容是我自己的理解,不一定正确)

抱歉!评论已关闭.