内联函数与宏定义的区别
来源:互联网 发布:软件测试 西安 编辑:程序博客网 时间:2024/05/23 23:46
使用宏和内联函数都可以节省在函数调用方面所带来的时间和空间开销。二者都采用了空间换时间的方式,在其调用处进行展开:
不同之处
- 在预编译时期,宏定义在调用处执行字符串的原样替换。在编译时期,内联函数在调用处展开,同时进行参数类型检查。
- 内联函数首先是函数,可以像调用普通函数一样调用内联函数。而宏定义往往需要添加很多括号防止歧义,编写更加复杂(边际效应)
- 宏定义是没有类型检查的,无论对还是错都是直接替换
内联函数在编译的时候会进行类型的检查,内联函数满足函数的性质,比如有返回值、参数列表等 - 内联函数可以作为某个类的成员函数,这样可以使用类的保护成员和私有成员。而当一个表达式涉及到类保护成员或私有成员时,宏就不能实现了(无法将this指针放在合适位置)。
可以用内联函数完全替代宏。
在编写内联函数时,函数体应该短小而简洁,不应该包含循环等较复杂结构,否则编译器不会将其当作内联函数看待,而是把它决议成为一个普通函数。
有些编译器甚至会优化内联函数,通常为避免一些不必要拷贝和构造,提高工作效率。
频繁的调用内联函数和宏定义容易造成代码膨胀,消耗更大的内存而造成过多的换页操作。
阅读全文
0 0
- 内联函数与宏定义的区别
- 内联函数与宏定义的区别
- 内联函数与宏定义的区别
- 内联函数与宏定义的区别
- 内联函数与宏定义的区别
- 内联函数与宏定义区别
- 内联函数与宏定义区别
- 内联函数与宏定义区别
- C++内联函数与宏定义的区别
- 内联函数与宏定义的区别举例
- C++内联函数与宏定义的区别
- inline 内联函数详解 内联函数与宏定义的区别
- 内联函数和宏定义的区别
- 内联函数和宏定义的区别
- 内联函数和宏定义的区别
- 内联函数和宏定义的区别
- 宏定义和内联函数的区别
- 内联函数和宏定义的区别
- C++ primer第五版 7.1.3节练习
- php设计模式---工厂模式
- Octave中句柄@的用法
- SGU103代码能力训练
- windows10 U盘启动盘制作
- 内联函数与宏定义的区别
- 缓冲运动 //缓冲运动 (目标值
- Connection请求数据工具类
- 分层背包 [HNOI2007]梦幻岛宝珠
- 免安装mysql-5.7.17-winx64配置详解
- 一周第三次课 2017.10.18 使用PuTTY及xshell远程连接Linux并使用密钥认证
- java学习开始,输出Welcome to Java!
- 购物车Demo
- QT5.9.1和opencv3.3配置(win10)