【C++】深入理解“内联与宏”
【摘要】 内联函数
内联代码,程序无需跳到另一个位置执行代码,再跳回来。因此,内联函数运行速度比常规函数稍快,但代价是需要占用更多内存。
所以应该有选择性的使用内联函数,如果函数执行代码的时间比处理函数调用的 时间长,则即使使用内联函数,节省也没啥明显改进,而如果代码执行时间很短,则内联函数调用就可以节省大部分调用所占的时间。
...
内联函数
内联代码,程序无需跳到另一个位置执行代码,再跳回来。因此,内联函数运行速度比常规函数稍快,但代价是需要占用更多内存。
所以应该有选择性的使用内联函数,如果函数执行代码的时间比处理函数调用的 时间长,则即使使用内联函数,节省也没啥明显改进,而如果代码执行时间很短,则内联函数调用就可以节省大部分调用所占的时间。
如何使用?
- 在函数声明前加上关键字 inline
- 在函数定义前加上关键字 inline
然而
程序员要求使用内联函数是,编译器不一定会满足这种要求。它很可能认为函数过大或者认为调用了自己(不能递归!), 而有的是编译器就没有这个功能
那么宏和内联有什么区别呢?
inline工具是C++新增的特性
C语言使用预处理器语句#define来提供宏--内联函数的原始实现
举例子:
#define square(x) x*x
宏并不是传递参数,而是传递文本替换,x仅仅是“参数”的符号标记
a=square(5.0); // 替换 a=5.0*5.0;
b=square(4.5+7.5); // 替换 b = 4.5+7.5 * 4.5 +7.5 ;
c=square(C++); //替换 c = C++*C++ ;
如果确实想使用这个宏?怎么办?
#define square(x) ((x)*(x))
然而,使用新定义后仍在某些情况下存在问题!请大家务必注意!
文章来源: kings.blog.csdn.net,作者:人工智能博士,版权归原作者所有,如需转载,请联系作者。
原文链接:kings.blog.csdn.net/article/details/85840333
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)