转-C++内联函数与宏定义区别

 

主要区别:

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

内联函数与宏的区别   分析得较为详细

 

posted @ 2018-10-30 21:13  eeeeeeee鹅  阅读(509)  评论(0编辑  收藏  举报