内联函数

使用inline关键字修饰的函数称为内联函数。编译器会在内联函数调用的地方对其进行函数展开。

特性

  • 内联函数是以空间换时间的思想。
  • inline修饰的函数,只是建议编译器对其进行优化。

综上两种特性,我们可以知道内联函数的特点:①:整体函数体比较下 ②:函数体不能为递归、循环

inline int add(int a,int b)
{return a+b;
}

宏与内联函数

宏的优点:

  • 方便编写
  • 可以增强代码的复用性。
    宏的缺点
  • 不能进行调试。
    宏是在编译阶段进行展开的,所以不方便调试代码。
  • 没有类型检查。
    在使用宏时,编译器不会进行类型检查。
  • 代码维护比较困难。
    使用如果发生错误时,不会在具体发生错误的地方显示错误,同时,如果有多个地方调用宏,则会出现多处错误。

C++中有inline关键字的作用于宏相似所以可以在C++中使用inline函数替代宏函数。
宏常量我们可以使用const关键字修饰的变量进行替换。

C++---内联函数与宏相关推荐

  1. 内联函数有什么优点?内联函数与宏定义的区别?

    内联函数的优点 内联函数比宏定义更加的安全,因为前者进行参数检查,而后者仅仅是简单地文本替换. 内联函数和宏定义的区别 宏定义是在预处理阶段进行的文本替换. 内联函数是在编译阶段进行的替换,优点是减少 ...

  2. 内联函数和宏定义的区别

    用内联取代宏: 1.内联函数在运行时可调试,而宏定义不可以; 2.编译器会对内联函数的参数类型做安全检查或自动类型转换(同普通函数),而宏定义则不会:  3.内联函数可以访问类的成员变量,宏定义则不能 ...

  3. 内联函数和宏定义的相关区别

    内联函数和宏定义的区别 相同点 : 主要是为了避免被调用时的开销,是通过编译器来进行实现,而宏定义是通过预处理器进行替换,宏定义不检查函数参数,返回值等东西,只是展开,而相对来说,内联函数会进行检查参 ...

  4. 【编程珠玑】内联函数和宏

    一,内联函数的用法 内联函数从源码层层看,有函数的结构,而在编译后,却不具备函数的性质.编译时,类似宏替换,使用函数体替换调用处的函数名.一般在代码中用inline修饰,但是能否形成内联函数,需要看编 ...

  5. 内联函数有什么优点?内联函数和宏定义的区别

    用内联函数取代宏: 1.内联函数在运行时可调试,而宏定义不可以; 2.编译器会对内联函数的参数类型做安全检查或自动类型转换(同普通函数),而宏定 义则不会: 3.内联函数可以访问类的成员变量,宏定义则 ...

  6. C++知识总结——内联函数与宏

    内联函数与宏 1.内联函数 1.1什么是内联函数 1.2选择使用内联函数 1.3内联函数优缺点 1.4内联函数与宏 1.5内联函数补充 1.内联函数 1.1什么是内联函数 ​​​  内联函数是c++的 ...

  7. 内联函数和宏定义函数的区别

    1.不同点: 内联函数是在编译时展开,而宏在预编译时展开:在编译的时候,内联函数直接被嵌入到目标代码中去,而宏只是一个简单的文本替换. 内联函数可以进行诸如类型安全检查.语句是否正确等编译功能,宏不具 ...

  8. 内联函数与宏函数的区别

    内联函数 概念 以inline修饰的函数叫做内联函数,编译时C++编译器会在调用内联函数的地方展开,没有函数压栈的开销,内联函数提升程序运行的效率 特性 inline是一种以空间换时间的做法,省去调用 ...

  9. C++起始(内联函数,宏的优缺点,const关键字,auto关键字(C++11)基于范围的for循环(C++11). 指针空值nullptr(C++11))

    内联函数 概念 以inline修饰的函数叫做内联函数,编译时C++编译器会在调用内联函数的地方展开,没有函数压栈的开销, 内联函数提升程序运行的效率 函数前增加inline关键字将其改成内联函数,在编 ...

  10. inline 内联函数详解 内联函数与宏定义的区别

    一.在C&C++中 一.inline 关键字用来定义一个类的内联函数,引入它的主要原因是用它替代C中表达式形式的宏定义. 表达式形式的宏定义一例: #define ExpressionName ...

最新文章

  1. 如何升级浏览器_绿茶浏览器app下载安装_绿茶浏览器软件最新版免费下载
  2. java广告投放系统_[Spring cloud 一步步实现广告系统] 5. 投放系统配置+启动+实体类...
  3. JVM内存管理------杂谈(借此也论一论obj=null)
  4. 为什么我那么努力,模电还是学不懂?
  5. 使用Ajax的Spring MVC REST调用
  6. 揭秘阿里云 RTS SDK 是如何实现直播降低延迟和卡顿
  7. python判断linux中文件是否存在_linux shell 中判断文件、目录是否存在的方法
  8. DLL的Export和Import及extern
  9. 几种主流热修复方案分析
  10. 数据结构实验5-递归
  11. 餐厅经营模拟游戏实战项目
  12. 【098】人民币数字转换大写?
  13. 全文干货:蓝牙耳机哪个品牌最好?平价好用的蓝牙耳机推荐
  14. 手机兼容性测试——机型选择(从系统、屏幕、型号考虑)
  15. 计算机网络之TCP四次挥手
  16. 青软新获「2022年度山东省软件和信息技术服务业综合竞争力百强企业」等三项荣誉!
  17. 阿里实习总结(近期)
  18. linux启动网络服务的命令,linux重启服务命令
  19. m4s格式转换mp3_超级详细!如何将B站缓存m4s文件无损转换为mp4格式
  20. 第二十章 Caché 命令大全 QUIT 命令

热门文章

  1. 无人机成为黑客的新工具,可黑掉部分家用的智能设备
  2. 跟着百度学PHP[13]-文件上传
  3. 安全测试工具-kali_无需整理
  4. Sql语句查询当天本周本月记录的where条件
  5. 练习瑜伽中常见的三大误区
  6. 黄刘生--数据结构--答案 2
  7. 笔记本暗屏维修多少钱_电视机烧了维修多少钱?
  8. Overview of HEVC之3 术语
  9. eclipse不支持泛型_Go语言11岁了,网友:他喵的,终于确定出「泛型」了
  10. 电脑摄像头未能创建连接服务器,Win7摄像头提示"未能创建视频预览"的原因及解决方法...