【C++】深入理解“内联与宏”
内联函数
内联代码,程序无需跳到另一个位置执行代码,再跳回来。因此,内联函数运行速度比常规函数稍快,但代价是需要占用更多内存。
所以应该有选择性的使用内联函数,如果函数执行代码的时间比处理函数调用的 时间长,则即使使用内联函数,节省也没啥明显改进,而如果代码执行时间很短,则内联函数调用就可以节省大部分调用所占的时间。
如何使用?
- 在函数声明前加上关键字 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++】深入理解“内联与宏”相关推荐
- 【C++】内联函数是什么?内联和宏有什么区别?
目录 什么是内联函数? 什么时候使用内联函数? 内联函数和常规函数的区别 如何使用内联函数? 注意: 代码示例 运行结果: 内联与宏有什么区别 什么是内联函数? 内联函数是C++为了提高程序运算速度所 ...
- 读书笔记 effective c++ Item 30 理解内联的里里外外 (大师入场啦)
正文 最近北京房价蹭蹭猛涨,买了房子的人心花怒放,没买的人心惊肉跳,咬牙切齿,楼主作为北漂无房一族,着实又亚历山大了一把,这些天晚上睡觉总是很难入睡,即使入睡,也是浮梦连篇,即使亚历山大,对C++的热 ...
- const 内联 枚举 宏
const 常量 程序运行时在常量表中,系统为它分配内存,在堆栈分配了空间:const常量有数据类型:语句末有分号:有类型检查:可以限制范围 //将所有不希望改变的变量加const修饰 const ...
- C++ 内联函数/宏/outo/for/nullptr
就不在详细写了,没什么可以深讲的,我把我的Xmind截图出来吧,还算比较详细了!!
- C++---内联函数与宏
内联函数 使用inline关键字修饰的函数称为内联函数.编译器会在内联函数调用的地方对其进行函数展开. 特性 内联函数是以空间换时间的思想. inline修饰的函数,只是建议编译器对其进行优化. 综上 ...
- 宏定义,宏函数和内联函数
宏定义,宏函数和内联函数 宏是什么: 简单宏替换出现的问题: 带参数的宏定义(宏函数): 宏的优点: 宏的缺陷,内联函数的引入 内联函数(空间换时间) 宏是什么: 宏(#define)命令是C语言中的 ...
- 提高C++性能的编程技术笔记:内联+测试代码
内联类似于宏,在调用方法内部展开被调用方法,以此来代替方法的调用.一般来说表达内联意图的方式有两种:一种是在定义方法时添加内联保留字的前缀:另一种是在类的头部声明中定义方法. 虽然内联方法的调用方式和 ...
- linux gcc 内联汇编入门
目录 2. 概览(Overview of the whole thing.) 3.GCC汇编语法(GCC Assembler Syntax.) 3.1. 源-目标顺序(Source-Destinati ...
- C++内联函数(inline function)
c++从c中继承的一个重要特征就是效率.假如c++的效率明显低于c的效率,那么就会有很大的一批程序员不去使用c++了. 在c中我们经常把一些短并且执行频繁的计算写成宏,而不是函数,这样做的理由是为了执 ...
最新文章
- 如何设计一个高可用系统?要考虑哪些地方?
- 《机器学习Python实践》——数据导入(CSV)
- 高性能Server---Reactor模型
- android 前摄屏幕补光,异形显示屏及其前置摄像头的拍照补光方法与流程
- oracle常用的工具软件
- Dijkstra 算法——计算有权最短路径(边有权值)
- 在 Sublime Text 中使用 SFTP 插件快速编辑远程服务器文件 Sublime-text with SFTP plugin ...
- 如何只保留1000条数据mysql_php实现只保留mysql中最新1000条记录
- java高效获取大文件的行数
- android 汽车 源码_汽车级Linux,无需Google即可运行Android等
- 人才稀缺的区块链,程序员转型入门必看这四项技能
- API的 Signature(签名)Token(令牌) 认证
- 【C#语言学习】学习一门语言
- visio转换html,【转】5款替代微软Visio的开源免费软件
- Vivado 错误代码 [DRC PDCN-2721] 解决
- 【RS-422与RS-485】RS-422与RS-485串行接口标准
- 深度学习开源数据集整理
- 神级:程序员面试、算法研究、编程艺术、红黑树、机器学习5大经典原创系列集锦与总结
- 混合模式程序集是针对“v1.1.4322”版的执行时生成的,在没有配置其它信息的情况下,无法在 4.0 执行时中载入该程序集。...
- 乾坤物联-UWB定位基站和定位信标的区别
热门文章
- CTF misc常用的图像处理
- 苹果5s能开机显示无服务器,iphone5s无法开机 iphone5s不能开机解决方法步骤
- uniapp vue获取dom元素位置和高度信息
- 魔兽世界服务器Trinitycore分析三:日志模块
- 自学了两个月才学完css和html,CSS多久能学会?
- `英语` 2022/8/15
- 2021-01-14某证券公司后台开发岗位面试记录(三面也是技术终面)
- cf飞刀制作源码_(飞刀转)《布林极限》源码及用法
- 11.1.0 Web 打印新支持 UGC 布局模板
- JavaWeb-用Responds下载文件