0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

预处理宏的优缺点有哪些

麦辣鸡腿堡 来源:轩哥谈芯 作者:轩哥谈芯 2023-11-01 17:44 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

预处理宏的优缺点

在软件开发过程中,经常有一些常用或者通用的功能或者代码段,这些功能既可以写成函数,也可以封装成为宏定义。那么究竟是用函数好,还是宏定义好?

我们还是看上一篇文章中引用的比较大小的例子:

#define MAX( a, b) ( (a) > (b) ? (a) : (b) )
//把它用函数来实现:
int max( int a, int b)
{  
    return (a > b ? a : b);
}

如果我们在程序中将要使用比较大小的函数,我们显然会选用上面的宏定义,理由如下:

首先,函数调用会带来额外的开销,他需要开辟新的栈空间,记录返回值,还需要将形参压入栈中,函数返回时还需要释放堆栈空间。

这样的开销不仅会让程序执行效率变低,代码量也会大大增加,因此使用上面的宏函数做文本替代就显得更明智。

其次,函数的形参被声明成了一个特定的类型,如例子中是 int,这样如果我们软件中需要使用浮点型的比较大小,我们就不得不重写一个函数,从这一点也可以看到宏函数的优势。

因为是文本的替换,因此他与类型也没有关系,不过类型不对应,会在编译阶段的时候报错,这点还是具备利用价值的。

另外,还有一些任务根本无法用函数实现****,但是用宏定义却很好实现。

比如参数类型没法作为参数传递给函数,但是可以把参数类型传递给带参的宏。

看下面的例子:

#define MALLOC(n, type )((type ) malloc((n)sizeof( type )))

利用这个宏,我们就可以为任何类型分配一段我们指定的空间大小,并返回指向这段空间的指针。我们可以观察一下这个宏确切的工作过程:

int *ptr;
ptr = MALLOC ( 5, int );
//将这宏展开以后的结果:
ptr = (int *) malloc ((5) * sizeof(int));

这个例子是宏定义的经典应用之一,完成了函数不能完成的功能,但是宏定义也不能滥用,通常,如果相同的代码需要出现在程序的几个地方,更好的方法是把它实现为一个函数。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 函数
    +关注

    关注

    3

    文章

    4422

    浏览量

    67834
  • 代码
    +关注

    关注

    30

    文章

    4976

    浏览量

    74376
  • 预处理
    +关注

    关注

    0

    文章

    33

    浏览量

    10834
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    降压稳压器中展频实现方法的优缺点

    本期为大家带来的是《降压稳压器中展频实现方法的优缺点》,本文介绍芯片设计人员在降压转换器中实现展频时所采用的流程,以及如何将这一方法扩展到其他系统。此外还将介绍常见的现代展频实现方法及其优缺点
    的头像 发表于 04-22 14:32 3098次阅读
    降压稳压器中展频实现方法的<b class='flag-5'>优缺点</b>

    arm嵌入式主板优缺点

    嵌入式主板是嵌入在设备里面做控制、数据处理使用的CPU板 ,常见的两类,即基于X86的嵌入式主板和基于RISC的ARM 嵌入式主板。今天我们就来认识arm嵌入式主板,arm嵌入式主板就是一个嵌入在
    发表于 01-08 07:08

    C语言中实现函数的三种方式

    十分接近。 优缺点总结: 优点:支持在无花括号且有分支的 if 语句中直接调用;返回值,支持作为表达式的右值。 缺点:不支持提前退出函数;非 C 的原生语法,编译器可能不支持。
    发表于 12-29 07:34

    电能质量在线监测装置测温功能的无线通信方式的优缺点哪些?

    电能质量在线监测装置测温功能的无线通信方式,可按 短距无线、长距低功耗广域 (LPWAN)、广域蜂窝通信 三大类分别分析优缺点,不同方式适配不同场景,其优势与局限高度关联自身技术特性,具体如下: 一
    的头像 发表于 12-10 11:51 922次阅读
    电能质量在线监测装置测温功能的无线通信方式的<b class='flag-5'>优缺点</b><b class='flag-5'>有</b>哪些?

    对比分析电能质量在线监测装置支持的断点续传文件传输协议的优缺点

    优缺点对比分析: 一、各协议优缺点逐一拆解 1. FTP(文件传输协议) 优点 断点续传机制成熟 :依托REST命令可精准定位字节偏移量,支持大文件分块续传,且内置 CRC 校验保障数据完整性,是装置的基础标配功能,适配性强。 传输效率高 :无加密运算损耗,传输速率
    的头像 发表于 12-05 17:49 3681次阅读
    对比分析电能质量在线监测装置支持的断点续传文件传输协议的<b class='flag-5'>优缺点</b>

    C语言拼接运算符典型使用

    在C语言中,##运算符(称为[size=16.002px]标记拼接运算符)用于定义中将两个标记(token)拼接成一个新的标记。它在预处理阶段处理,常用于动态生成变量名、函数名或类型名,以提高代码
    发表于 11-20 08:27

    不同类型的电能质量在线监测装置数据存储方式哪些优缺点

    不同类型的电能质量在线监测装置数据存储方式,核心差异体现在 数据控制权、实时性、运维成本、扩展性 上,主要分为 本地存储、云端存储、混合存储 三类。每类方式的优缺点需结合电能质量数据特征(时序性
    的头像 发表于 10-30 10:00 432次阅读

    数据预处理软核加速模块设计

    数据拼接操作,其预处理模块结构框图如下图 模块最后得到的信号为ddr_q、ddr_clk和ddr_wrreq。ddr_q是并行128bits图像数据,ddr_clk是RAM的出口时钟,同时引出作为下一模块的数据时钟,ddr_wrreq置高时代表有效数据。
    发表于 10-29 08:09

    无线局域网的优缺点和使用要点

    近年来,无线局域网 已普遍应用于我们生活的方方面面。本文将介绍无线局域网的基础知识、优缺点、与 Wi-Fi 及有线局域网的区别,以及有效使用的要点。全球领先的短距离无线模块供应商 KAGA FEI
    的头像 发表于 08-14 16:04 3389次阅读
    无线局域网的<b class='flag-5'>优缺点</b>和使用要点

    FPGA 加持,友思特图像采集卡高速预处理助力视觉系统运行提速增效

    图像预处理是图像处理关键环节,可优化数据传输、减轻主机负担,其算法可在FPGA等硬件上执行。友思特FPGA图像采集卡凭借FPGA特性,能缩短处理时间、降低延迟,适用于高速接口及实时、大数据量场景,可完成多种
    的头像 发表于 08-13 17:41 1338次阅读
    FPGA 加持,友思特图像采集卡高速<b class='flag-5'>预处理</b>助力视觉系统运行提速增效

    锂电池制造 | 电芯预处理工艺的步骤详解

    电芯预处理是锂电池包制造的首要工序,无论是新能源汽车的续航稳定性,还是储能系统的循环寿命,其根基都可追溯至预处理工序对电芯一致性的把控,其核心在于通过系统检测与筛选消除量产电芯的性能差异,为后续组装
    的头像 发表于 08-11 14:53 2079次阅读
    锂电池制造 | 电芯<b class='flag-5'>预处理</b>工艺的步骤详解

    超级电容对比锂电池的优缺点

    本文探讨了超级电容和锂电池在储能领域的优缺点。超级电容以高能量密度著称,但充电速度较慢;锂电池则具有快充和寿命长的优势,但成本较高。在新能源汽车和电网调频等高频次应用中,两者可以互补。
    的头像 发表于 06-30 09:37 3055次阅读
    超级电容对比锂电池的<b class='flag-5'>优缺点</b>

    商业云手机核心优缺点分析

    商业云手机核心优缺点分析,综合技术性能、成本效率及场景适配性等多维度对比: 核心优势‌ 成本革命‌ 硬件零投入‌:免除实体手机采购(旗舰机均价6000元),企业百台规模可省60万+ CAPEX
    的头像 发表于 06-16 08:11 1190次阅读
    商业云手机核心<b class='flag-5'>优缺点</b>分析

    PCBA 表面处理优缺点大揭秘,应用场景全解析

    一站式PCBA加工厂家今天为大家讲讲PCBA加工如何选择合适的表面处理工艺?PCBA表面处理优缺点与应用场景。在电子制造中,PCBA板的表面处理工艺对电路板的性能、可靠性和成本都有重要
    的头像 发表于 05-05 09:39 1591次阅读
    PCBA 表面<b class='flag-5'>处理</b>:<b class='flag-5'>优缺点</b>大揭秘,应用场景全解析

    3D打印耗材种类哪些?各有什么优缺点

    这篇文章将为你详细介绍3D打印耗材的基础知识,帮助你了解这些材料的特性、优缺点以及它们适合的应用场景。
    的头像 发表于 04-29 09:40 5.4w次阅读
    3D打印耗材种类<b class='flag-5'>有</b>哪些?各有什么<b class='flag-5'>优缺点</b>?