inline内联函数和宏的区别
2014-02-24 19:43
190 查看
1、内联函数在编译时展开,而宏在预编译时展开
2、在编译的时候,内联函数直接被嵌入到目标代码中去,而宏只是一个简单的文本替换。
3、内联函数可以进行诸如类型安全检查、语句是否正确等编译功能,宏不具有这样的功能。
4、宏不是函数,而inline是函数
5、宏在定义时要小心处理宏参数,一般用括号括起来,否则容易出现二义性。而内联函数不会出现二义性。
C++ inline函数
inline函数一般用于比较小的,频繁调用的函数,这样可以减少函数调用带来的开销。只需要在函数返回类型前加上关键字inline,即可将函数指定为inline函数。
inline有点类似于宏定义,但是它和宏定义不同的是,宏定义只是简单的文本替换,是在预编译阶段进行的。而inline的引入正是为了取消这种复杂的宏定义的。
同其它函数不同的是,最好将inline函数定义在头文件,而不仅仅是声明,因为编译器在处理inline函数时,需要在调用点内联展开该函数,所以仅需要函数声明是不够的。
例如:
1 #include <iostream>
2
3 using namespace std;
4
5 inline int add(int a, int b)
6 {
7 return (a + b);
8 }
9
10 int main(void)
11 {
12 cout << add(1, 2) << endl;
13
14 return 0;
15 }
以上12行处在编译时将被展开为:
cout << (a + b) << endl;
2、在编译的时候,内联函数直接被嵌入到目标代码中去,而宏只是一个简单的文本替换。
3、内联函数可以进行诸如类型安全检查、语句是否正确等编译功能,宏不具有这样的功能。
4、宏不是函数,而inline是函数
5、宏在定义时要小心处理宏参数,一般用括号括起来,否则容易出现二义性。而内联函数不会出现二义性。
C++ inline函数
inline函数一般用于比较小的,频繁调用的函数,这样可以减少函数调用带来的开销。只需要在函数返回类型前加上关键字inline,即可将函数指定为inline函数。
inline有点类似于宏定义,但是它和宏定义不同的是,宏定义只是简单的文本替换,是在预编译阶段进行的。而inline的引入正是为了取消这种复杂的宏定义的。
同其它函数不同的是,最好将inline函数定义在头文件,而不仅仅是声明,因为编译器在处理inline函数时,需要在调用点内联展开该函数,所以仅需要函数声明是不够的。
例如:
1 #include <iostream>
2
3 using namespace std;
4
5 inline int add(int a, int b)
6 {
7 return (a + b);
8 }
9
10 int main(void)
11 {
12 cout << add(1, 2) << endl;
13
14 return 0;
15 }
以上12行处在编译时将被展开为:
cout << (a + b) << endl;
相关文章推荐
- uva 10026 - Shoemaker's Problem
- 10 个很棒的 jQuery 代码片段
- Netty源代码之FrameDecoder
- Linux软件安装-详细源码安装过程 推荐
- 文本处理环境搭建
- OCP-1Z0-053-V13.02-698题
- 产品经理的能力框架图
- js作用域的介绍
- 【计算几何】ZOJ 2967 Colorful Rainbows
- CString 转换为const char *
- Spring学习笔记(二)Spring基础AOP、IOC
- 【3】服务器开发--IOCP模型
- 《HP大中华区总裁孙振耀退休感言》---40岁前的男人必看的文章!共勉
- php类型转换
- UIView中的坐标转换
- SQL 关键字
- [哈希]PAT1032 Sharing
- 【OpenCV学习笔记】【函数学习】十(常用的OpenCV函数汇总说明)
- POJ 2112 Optimal Milking 二分最大流
- PHP标记