宏(#define)和内联函数(inline)的理解以及区别
函数 区别 理解 以及 define 内联 inline
2023-09-14 09:07:02 时间
1.宏(#define)和内联函数(inline)的理解以及区别:
宏
缺点:
1.宏没有类型检测,不安全
2.宏是在预处理时进行简单文本替换,并不是简单的参数传递(很难处理一些特定情况。例如:Add(z++))
3.使代码变长
4.宏不能进行调试
5.当预处理搜索#define定义的符号时,字符串常量并不被搜索
优点:
1.加快了代码的运行效率
2.让代码变得更加的通用
内联函数
类中的成员函数是默认的内联函数
内联函数内不准许有循环语句和开关语句
内联函数的定义必须出现在第一次调用内联函数之前
**缺点:**代码变长,占用更多内存
**优点:**1.有类型检测,更加的安全
2.内联函数是在程序运行时展开,而且是进行的是参数传递
3.编译器可以检测定义的内联函数是否满足要求,如果不满足就会当作普通函数调用(内联函数不能递归,内联函数不能太大)
对比
相同点:
两者都是可以加快程序运行效率,使代码变得更加通用
不同点:
1.内联函数的调用是传参,宏定义只是简单的文本替换
2.内联函数可以在程序运行时调用,宏定义是在程序编译进行
3.内联函数有类型检测更加的安全,宏定义没有类型检测
4.内联函数在运行时可调式,宏定义不可以
5.内联函数可以访问类的成员变量,宏不可以
6.类中的成员函数是默认的内联函数
相关文章
- VBA收藏一常用的自定义函数
- 箭头函数与普通函数(function)的区别是什么?构造函数(function)可以使用 new 生成实例,那么箭头函数可以吗?为什么?
- 【Android 逆向】函数拦截 ( CPU 高速缓存机制 | CPU 高速缓存机制 导致 函数拦截失败 )
- 【数字信号处理】基本序列 ( 基本序列列举 | 单位脉冲序列 | 单位脉冲函数 | 离散单位脉冲函数 | 单位脉冲函数 与 离散单位脉冲函数的区别 )
- MySQL 格式化日期函数 DATE_FORMAT(), FROM_UNIXTIME() 和 UNIX_TIMESTAMP() 之间区别
- Oracle 大小写转换函数实例详解
- Go语言函数的底层实现
- Oracle系统中使用fopen函数(oraclefopen)
- Linux程序设计中printf函数的使用(printflinux)
- 使用MSSQL的几何函数实现空间数据分析(mssql的几何函数)
- Oracle函数保留整数分析(oracle保留整数函数)
- Oracle下 使用下一行函数实现数据处理(oracle 下一行函数)
- aspbase64加解密函数代码
- C语言中函数与指针的应用总结
- 虚函数与纯虚函数(C++与Java虚函数的区别)的深入分析
- JavaScript:new一个函数和直接调用函数的区别分析
- 跟老齐学Python之传说中的函数编写条规
- Java函数式编程(二):集合的使用