首页 > 其他 > 详细

inline内联函数和宏定义

时间:2021-03-30 22:12:45      阅读:38      评论:0      收藏:0      [点我收藏+]

inline内联函数

要习惯用函数来代替表达式:

在C++中,通常定义以下函数来求两个数之间的最大值:
int max(int x,int y) {return x > y ? x : y;}
这样做的好处是:

  1. 阅读和理解函数max的调用要比读条件表达式并解释其含义简单
  2. 如果需要任何修改,修改函数要比修改每一处的表达式容易得多
  3. 使用函数可以确保统一的行为,每个测试都保证以相同的方式实现
  4. 函数可以重用,不必为其他应用程序重写代码

但是函数调用开销太大,在C中使用宏定义来替代表达式,在C++中就可以使用inline内联函数

什么是内联函数?

内联函数是C++的增强特性之一,用来降低程序的运行时间
当内联函数收到编译器的指示时,即可发生内联:编译器将使用函数的定义体来代替函数调用语句,这种替代行为发生在编译阶段而非程序运行阶段
定义函数时,在函数类型前以关键字“inline”来声明函数,即可使函数成为内联声明函数

 

inline
int max (int x,int y)
{
  return x > y ? x : y;
}

 

 

 

inline内联函数和带参数的宏定义的区别?

1.使用宏定义最大的缺点是容易出错,预处理器在拷贝宏定义代码时常常发生意想不到的边际效应
2.宏的另一个缺点就是不可调试,但是内联函数是可以调试的
3.对于C++而言,使用宏代码无法操作类的私有数据成员
4.函数被内联后,编译器就可以通过上下文相关的优化技术对结果代码执行更深入的优化

内联函数如何放入头文件?

关键字inline必须与函数定义体放在一起才能使函数成为内联,仅将inline放在函数声明前不起任何作用
所以内联函数的声明和定义都需要放入头文件中

什么情况下适合使用内联函数?

1.函数体内的代码比较短,调用比较频繁
,适合使用内联函数。若函数体内的代码比较长,使用内联将导致可执行代码膨胀过大
2.函数体内没有循环或其他复杂的控制结构
3.类的构造函数和析构函数不适合使用内联

inline内联函数和宏定义

原文:https://www.cnblogs.com/Bin-zzz/p/14598743.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!