内联函数

内联代码,程序无需跳到另一个位置执行代码,再跳回来。因此,内联函数运行速度比常规函数稍快,但代价是需要占用更多内存。

所以应该有选择性的使用内联函数,如果函数执行代码的时间比处理函数调用的 时间长,则即使使用内联函数,节省也没啥明显改进,而如果代码执行时间很短,则内联函数调用就可以节省大部分调用所占的时间。

如何使用?

  • 在函数声明前加上关键字  inline
  • 在函数定义前加上关键字  inline

然而

程序员要求使用内联函数是,编译器不一定会满足这种要求。它很可能认为函数过大或者认为调用了自己(不能递归!),  而有的是编译器就没有这个功能

那么宏和内联有什么区别呢?

inline工具是C++新增的特性

C语言使用预处理器语句#define来提供宏--内联函数的原始实现

举例子:

#define  square(x)  x*x

宏并不是传递参数,而是传递文本替换,x仅仅是“参数”的符号标记

a=square(5.0);     //  替换  a=5.0*5.0;

b=square(4.5+7.5);         // 替换  b = 4.5+7.5 * 4.5 +7.5 ;

c=square(C++);               //替换   c = C++*C++ ;

如果确实想使用这个宏?怎么办?

#define  square(x)   ((x)*(x))

然而,使用新定义后仍在某些情况下存在问题!请大家务必注意!

【C++】深入理解“内联与宏”相关推荐

  1. 【C++】内联函数是什么?内联和宏有什么区别?

    目录 什么是内联函数? 什么时候使用内联函数? 内联函数和常规函数的区别 如何使用内联函数? 注意: 代码示例 运行结果: 内联与宏有什么区别 什么是内联函数? 内联函数是C++为了提高程序运算速度所 ...

  2. 读书笔记 effective c++ Item 30 理解内联的里里外外 (大师入场啦)

    正文 最近北京房价蹭蹭猛涨,买了房子的人心花怒放,没买的人心惊肉跳,咬牙切齿,楼主作为北漂无房一族,着实又亚历山大了一把,这些天晚上睡觉总是很难入睡,即使入睡,也是浮梦连篇,即使亚历山大,对C++的热 ...

  3. const 内联 枚举 宏

    const 常量   程序运行时在常量表中,系统为它分配内存,在堆栈分配了空间:const常量有数据类型:语句末有分号:有类型检查:可以限制范围 //将所有不希望改变的变量加const修饰 const ...

  4. C++ 内联函数/宏/outo/for/nullptr

    就不在详细写了,没什么可以深讲的,我把我的Xmind截图出来吧,还算比较详细了!!

  5. C++---内联函数与宏

    内联函数 使用inline关键字修饰的函数称为内联函数.编译器会在内联函数调用的地方对其进行函数展开. 特性 内联函数是以空间换时间的思想. inline修饰的函数,只是建议编译器对其进行优化. 综上 ...

  6. 宏定义,宏函数和内联函数

    宏定义,宏函数和内联函数 宏是什么: 简单宏替换出现的问题: 带参数的宏定义(宏函数): 宏的优点: 宏的缺陷,内联函数的引入 内联函数(空间换时间) 宏是什么: 宏(#define)命令是C语言中的 ...

  7. 提高C++性能的编程技术笔记:内联+测试代码

    内联类似于宏,在调用方法内部展开被调用方法,以此来代替方法的调用.一般来说表达内联意图的方式有两种:一种是在定义方法时添加内联保留字的前缀:另一种是在类的头部声明中定义方法. 虽然内联方法的调用方式和 ...

  8. linux gcc 内联汇编入门

    目录 2. 概览(Overview of the whole thing.) 3.GCC汇编语法(GCC Assembler Syntax.) 3.1. 源-目标顺序(Source-Destinati ...

  9. C++内联函数(inline function)

    c++从c中继承的一个重要特征就是效率.假如c++的效率明显低于c的效率,那么就会有很大的一批程序员不去使用c++了. 在c中我们经常把一些短并且执行频繁的计算写成宏,而不是函数,这样做的理由是为了执 ...

最新文章

  1. 如何设计一个高可用系统?要考虑哪些地方?
  2. 《机器学习Python实践》——数据导入(CSV)
  3. 高性能Server---Reactor模型
  4. android 前摄屏幕补光,异形显示屏及其前置摄像头的拍照补光方法与流程
  5. oracle常用的工具软件
  6. Dijkstra 算法——计算有权最短路径(边有权值)
  7. 在 Sublime Text 中使用 SFTP 插件快速编辑远程服务器文件 Sublime-text with SFTP plugin ...
  8. 如何只保留1000条数据mysql_php实现只保留mysql中最新1000条记录
  9. java高效获取大文件的行数
  10. android 汽车 源码_汽车级Linux,无需Google即可运行Android等
  11. 人才稀缺的区块链,程序员转型入门必看这四项技能
  12. API的 Signature(签名)Token(令牌) 认证
  13. 【C#语言学习】学习一门语言
  14. visio转换html,【转】5款替代微软Visio的开源免费软件
  15. Vivado 错误代码 [DRC PDCN-2721] 解决
  16. 【RS-422与RS-485】RS-422与RS-485串行接口标准
  17. 深度学习开源数据集整理
  18. 神级:程序员面试、算法研究、编程艺术、红黑树、机器学习5大经典原创系列集锦与总结
  19. 混合模式程序集是针对“v1.1.4322”版的执行时生成的,在没有配置其它信息的情况下,无法在 4.0 执行时中载入该程序集。...
  20. 乾坤物联-UWB定位基站和定位信标的区别

热门文章

  1. CTF misc常用的图像处理
  2. 苹果5s能开机显示无服务器,iphone5s无法开机 iphone5s不能开机解决方法步骤
  3. uniapp vue获取dom元素位置和高度信息
  4. 魔兽世界服务器Trinitycore分析三:日志模块
  5. 自学了两个月才学完css和html,CSS多久能学会?
  6. `英语` 2022/8/15
  7. 2021-01-14某证券公司后台开发岗位面试记录(三面也是技术终面)
  8. cf飞刀制作源码_(飞刀转)《布林极限》源码及用法
  9. 11.1.0 Web 打印新支持 UGC 布局模板
  10. JavaWeb-用Responds下载文件