宏与内联(inline)的区别
来源:互联网 发布:淘宝寄到国外怎么收费 编辑:程序博客网 时间:2024/05/29 17:36
宏与内联(inline)的区别
(1)、宏只做简单的字符串替换,函数是参数传递,所以必然有参数类型检查(支持各种类型,而不是只有字符串)。
(2)、宏不经计算而直接替换参数,函数调用则是将参数表达式求值再传递给形参。
(3)、宏在编译前进行,即先替换再编译。而函数是编译后,在执行时才调用的。宏占编译时间,而函数占执行时间。
(4)、宏参数不占空间,因为只做字符串替换,而函数调用时参数传递是变量之间的传递,形参作为局部变量占内存空间。
(5)、函数调用需要保留现场,然后转入调用函数执行,执行完毕再返回主调函数,这些耗费在宏中是没有的。
使用宏和内联函数都可以节省在函数调用方面的时间和空间开销。二者都是为了提高效率,但是却有着显著的区别:
(1)、在使用时,宏只做简单的预处理器符号表(字符串)中的简单替换。而内联函数可以进行参数类型检查,且具有返回值(也能被强制转换为可转换的合适类型)。
(2)、内联函数首先是函数,函数的许多性质都适用于内联函数(如内联函数可以重载)。
(3)、内联函数可以作为某个类的成员函数,这样可以使用类的保护成员和私有成员。而当一个表达式涉及到类保护成员或私有成员时,宏就不能实现了(无法将this指针放在合适位置)。
可以用内联函数完全替代宏。
但是在使用内联函数时也要注意:作为内联函数,函数体必须十分简单,不能包含循环,条件,选择等复杂结构,否则不能作为内联函数。
实际上,编译器的优化系统会自动将一些简单函数变成内联函数。而一些复杂的函数,即使指定为内联,编译器也会自动当作普通函数。
- 宏与内联(inline)的区别
- 内联函数inline ,宏与函数的区别
- inline 内联函数详解 内联函数与宏定义的区别
- inline内联函数和宏的区别
- inline内联函数和宏的区别
- 内联函数(inline)与普通函数的区别
- inline内联函数与宏
- inline 内联函数和宏函数的区别
- 内联(inline)函数和宏定义(#define)的区别
- define宏定义与inline内联的异同
- 内联函数:static inline 和 extern inline 的区别
- inline与宏的区别
- inline与宏的区别
- inline内联的用法与作用
- 内联函数与宏的区别
- 宏与内联函数的区别
- 内联函数与宏定义的区别
- 宏与内联函数的区别
- Annotation学习入门的几篇文章
- 大数加法
- hdu 4707 Pet
- SRM 590 DIV1
- Java序列化的作用和反序列化
- 宏与内联(inline)的区别
- Linux多线程服务端编程(笔记2)
- PostQuitMessage(退出程序的一种方法)
- hdu 4706 Children's Day
- win7下如何建立ftp服务器
- hdu 4706
- 已知:yi er san si wu liu qi ba jiu 分别对应123456789,对一段只含有这几种字符的字符串进行转 换,转换成相应的数字
- 五笔必备
- Java中hashCode的作用