1.宏中定义函数存在问题,它并不是真正的函数

#define BAND(x) (((x) > 5 && *x) < 10) ? (x) : 0)int main(){for (int i = 4; i < 11; i++){int a = i;cout << "a = " << a << endl << '\t';cout << "BAND(++a) = " << BAND(++a) << endl;cout << "\t a = " << a << endl;}
}

结果:

a=4BAND(++a)=0a=5
a=5BAND(++a)=8a=8
a=6BAND(++a)=9a=9
a=4BAND(++a)=0a=5
....

a=4时,因为第一个条件不满足,那么只执行了一次自加操作;a=5时,++a=6,满足条件,再判断第二个++a=7,之后赋值++a=8。

C++中使用内联函数来实现,内联函数怎么看都是函数,但是它会在适当的地方像宏一样展开,节省了函数调用的开销。
内联函数有两处不能用,当函数代码过于复杂时,或者要显式或隐式地取函数地址。
内联知识编译器的建议,并不强迫内联。
构造函数和析构函数看起来足够简单使用内联,但实际上二者可能隐式地嵌套调用,并不简单。所以内不内联,还是要结合具体问题具体分析的。


欢迎扫描二维码关注微信公众号 深度学习与数学   [每天获取免费的大数据、AI等相关的学习资源、经典和最新的深度学习相关的论文研读,算法和其他互联网技能的学习,概率论、线性代数等高等数学知识的回顾]

【一天一个C++小知识】008.内联函数相关推荐

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

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

  2. C6000系列DSP的内联函数

    在c中,为了解决一些频繁调用的小函数大量消耗栈空间或是叫栈内存的问题,特别的引入了inline修饰符,表示为内联函数数.栈空间就是指放置程序的局部数据也就是函数内数据的内存空间,在系统下,栈空间是有限 ...

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

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

  4. 内联函数(inline 函数)详解

    inline 函数详解 定义 内联函数和普通函数一样,区别仅仅是在被调用处直接使用机器码替换的形式. 直接采用机器码替换的目的是:减少因调用而造成的开销,加速执行效率. 很多编程语言包括:c,c++, ...

  5. 安卓期末作品小项目_每日一个财务小知识——洞悉洞晰财务报告第一季

    财务报告 洞悉洞晰财务报告 目录 01/账务报告概述 02/资产负债表 03/利润表 04/现金流量表 05/所有者权益变动表 06/附注 一.财务报告概述 (一)财务报告及其目标 财务报告是指企业对 ...

  6. 使用内联函数的一个问题

    2019独角兽企业重金招聘Python工程师标准>>> 最近碰到一个与内联方法有关的编译问题,记叙如下. 问题背景 类Scheduler的实现如下所示,其中方法SetStates() ...

  7. 内联函数与普通函数、成员函数与静态函数的区别(知识整理)

    内联函数与普通函数的区别 普通函数在编译的过程中由编译器将函数体放入代码段,在调用函数过程中先进行参数的压栈,然后根据函数的调用地址调用函数,并执行,函数返回后执行出栈操作,这样就会有一个调用的过程, ...

  8. mysql 内联函数_内联函数 - freeboy小亮 - 博客园

    (1)什么是内联函数? 内联函数是指那些定义在类体内的成员函数,即该函数的函数体放在类体内. (2)为什么要引入内联函数? 当然,引入内联函数的主要目的是:解决程序中函数调用的效率问题.另外,前面我们 ...

  9. Kotlin小知识之高阶函数

    文章目录 高阶函数 定义高阶函数 函数类型 高阶函数示例 内联函数 内联函数的作用 内联函数的用法 noinline与crossinline 高阶函数 定义高阶函数 高阶函数和Lambda的关系是密不 ...

  10. 内联函数和编译器对Go代码的优化

    什么是内联函数 图片版权:Renee French. 在很多讲 Go 语言底层的技术资料和博客里都会提到内联函数这个名词,也有人把内联函数说成代码内联.函数展开.展开函数等等,其实想表达的都是 Go ...

最新文章

  1. 理解YOLOv2训练过程中输出参数含义
  2. Apache与Tomcat联系及区别
  3. Struts2 JSON
  4. Flink的Window
  5. knime二次开发节点的项目结构
  6. 张正友相机标定程序实现
  7. Linux:常用shell快捷键
  8. 海康威视网络摄像头开发流程(七)-------- 激活海康威视网络摄像头
  9. UNI-APP获取手机MAC地址
  10. 方差np.var()
  11. 女生学习前端究竟适不适合?
  12. 什么软件可以测试网络的稳定性,手机怎么测试网络稳定性
  13. java如何找出勾股数组_勾股数组 学习笔记
  14. 物联网有哪些安全风险?物联网安全问题汇总
  15. 音视频开发系列1:音视频开发基本概念
  16. 数据库管理工具heidiSQL的基本使用
  17. php刷网站关键词排名,刷百度快速排名 提升百度网站关键词快速排名上首页-环企优站...
  18. 系统启动之——grub4dos篇
  19. 51单片机中断与定时器计数器,基于普中科技教学视频学习记录
  20. 为什么把牛奶倒入大海?

热门文章

  1. 软件漏洞-泛微OA-汇总
  2. Counting Bits -leetcode
  3. 借助Sigar API获取内存信息
  4. Java中Arrays类的两个方法:deepEquals和equals
  5. sql排序怎么11在2前面
  6. mybatis 主从表关联查询封装返回结果
  7. jetty运行web项目
  8. 面试硬核干货:纯CSS实现垂直居中,快来收藏吧
  9. Sql Server2005 Transact-SQL
  10. linux 命令的高级用法(chmod+find 批量授权)(转载)