主要区别:
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;
参考:
https://blog.csdn.net/u013321328/article/details/19838145
内联函数与宏的区别 分析得较为详细