内联函数inline和宏定义

2023-11-03

内联函数inline和宏定义

内联函数的优越性:

一:inline定义的类的内联函数,函数的代码被放入符号表中,在使用时直接进行替换(像宏定义一样展开),没有了调用的开销,效率很高。

二:类的内敛函数是一个真正的函数。

三:使用内联函数inline可以完全取代表达式形式的宏定义。

 

例子:

Class A

{

public:

int readTest()

{

return nTest;

}

void setTest(int i);

};

inline void A::setTest(int i)

{

nTest=i;

};

说明:类A的成员函数readTest()和setTest()都是内联函数,readTest()函数的定义体被放在类声明之中,因而readTest()自动转换成inline函数,setTest函数的定义体在类声明之外,因此要加上inline关键字。

总结inline函数与宏定义的区别:

1、内敛函数在编译时展开,而宏是在预编译时就展开了

2、在编译时内敛函数可以直接被嵌入到目标函数代码中,而宏只是一个简单的文本替换

3、内敛函数可以完成诸如类型的检测、语句是否正确等编译功能,宏就不具备这种功能

4、宏不是函数,而inline函数是函数

5、宏在定义时要小心处理宏参数,(一般情况是把参数用括弧括起来)。


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

内联函数inline和宏定义 的相关文章

随机推荐

  • 微信小程序 公众号 订阅消息 模板 正则 参数校验

    自己配置订阅消息模板 如果参数格式不正确 会导致订阅消息发不出去 所以在创建模板的时候需要校验参数格式 订阅通知参数值内容限制说明 微信官方文档 创建模板 代码
  • qt 信号发送太快,槽太慢的解决办法

    手机码字太慢 自己看 ifndef THREADTEST H define THREADTEST H include include include include class ThreadTest public QObject Q OBJ
  • 职业规划-IT方向(超详细,超具体)

    前言 今天是周五 本来想好好休息 前天写了一篇博文 说出我的故事 献给正在迷茫的你 不少读者留言不知该如何做职业规划 于是继续拖着忙碌了一周疲倦的身体 坐在电脑前 吹着电扇 提笔写下这篇 职业规划 IT方向 如果你是应届生 或者准备转行 I
  • Django项目想要在 Python Console里面进行操作 报错找不到对应模块

    Django项目想要在 Python Console里面进行操作 报错找不到对应模块 问题描述 ModuleNotFoundError No module named django 问题原因 在进行对 Python console操作 进行
  • 6.1-深度学习简介

    文章目录 一 深度学习的三个步骤 1 1 全连接前馈网络 Fully Connect Feedforward Network 1 2 矩阵运算 Matrix Operation 1 3 手写数字辨识 二 确定评价函数 goodness of
  • 静电电容

    1 用电容进行ESD的防护只能用数pF到数百pF的小电容 这里关注的不是容量而是串联等效电感参数 静电放电极快 对应极高的频率 耐压的问题不用考虑 因为静电源内阻极高 能量很小 放电时电压跌落极快 2 理论上讲大电容并不会因为时间常数的增加
  • ❤echarts折线图完整使用及详细配置参数

    echarts折线图完整使用及详细配置参数 进入echarts官网 查看案例 下面说说一些echarts图的调节 一 配置echarts具体参数 01 基础版本的折线图 option xAxis type category data Mon
  • 将gif图转成静态图片显示canvas

    需求描述 仅一张gif动图 进入页面 呈现静态图片显示 点击 gif图显示 代码实现
  • uniapp全局分享以及指定页面分享禁用的设置

    1 创建share js文件 module exports onLoad 设置默认的转发参数 share title 默认为小程序名称 path 默认为当前页面路径 imageUrl 默认为当前页面的截图 白名单 const urlList
  • Apollo学习笔记

    Apollo学习笔记 Apollo课程 智能驾驶入门课程 无人驾驶概览 1 软件层分为三层 实时操作系统 RTOS 确保在给定时间内完成特定任务 实时时确保系统稳定性 驾驶安全性的重要要求 通过在Ubuntu Linux操作系统加入Apol
  • 带有Cookie功能的HTTP访问函数,GET,PUT/POST

    define AFX INET SERVICE FTP INTERNET SERVICE FTP define AFX INET SERVICE HTTP INTERNET SERVICE HTTP define AFX INET SERV
  • Oracle删除数据的三种方式

    Oracle删除数据的三种方法 删除表 记录和结构 的语句delete truncate drop drop命令 drop table 表名 例如 删除学生表 student drop table student 注意 1 用drop删除表
  • node.js学习——初始node,node基本介绍,环境安装,运行第一个node程序。

    node js学习 初始node node基本介绍 环境安装 运行第一个node程序 1 node基本介绍 为什么学习Node js 什么是node js Node js的特性 Node js能做什么 2 Node环境安装 环境安装 3 第
  • Oracle中connect by...start with...的使用

    一 语法 大致写法 select from some table where 条件1 connect by 条件2 start with 条件3 其中 connect by 与 start with 语句摆放的先后顺序不影响查询的结果 wh
  • android studio导入源码(来自github上下载的压缩包)

    Francis学习笔记之android studio解决系列一 andorid studio导入源码问题及android studio 中途出错解决办法 一 导入源码 首先看一下从github下载的压缩包解压后文件内容 从上面发现没有gra
  • 【深度长文】循序渐进解读Oracle AWR性能分析报告

    深度长文 循序渐进解读Oracle AWR性能分析报告 原创 2016 10 19 韩锋 DBAplus社群 http mp weixin qq com s biz MzI4NTA1MDEwNg mid 2650757102 idx 1 s
  • Android onNewIntent调用时机

    1 onNewIntent 首先看一下Activity 的生命周期 从图中可知 初次启动 Activity 时 调用顺序为 onCreate gt onStart gt onResume 那么 onNewIntent 是什么时候被触发的呢
  • 动态解析ipv6地址,实现域名访问家里网络

    前提已有IPv6地址 有阿里云的域名 非顶级域名便宜 一般几块一年 脚本实现方式 获取token 如果没有创建一个 获取阿里云AccessToken 修改脚本变量值 运行后运行脚本 即可在域名解析找到新增的记录 因为供应商提供dns不固定
  • 一文带你熟练掌握android的arm32汇编指令。

    1 ARM32的常见指令解析 ADC 带进位加法指令 ADD 加法指令 AND 逻辑与指令 B 分支指令 BIC 位清零指令 BL 带返回的分支指令 BLX 带返回和状态却换的分支指令 BX 带状态却换的分支指令 CDP 协处理器数据操作指
  • 内联函数inline和宏定义

    内联函数inline和宏定义 内联函数的优越性 一 inline定义的类的内联函数 函数的代码被放入符号表中 在使用时直接进行替换 像宏定义一样展开 没有了调用的开销 效率很高 二 类的内敛函数是一个真正的函数 三 使用内联函数inline