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

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

3天内不再提示

宏和函数到底有什么区别

Wildesbeast 来源:未知 作者:算法集市 2020-02-22 17:32 次阅读

这篇介绍宏和函数的区别。

宏是C语言预处理命令的一种。所谓宏定义,就是用一个标识符来表示一个字符串,如果在后面的代码中出现了该标识符,那么就全部替换成指定的字符串。其形式如下:

#define 宏名称 替换文本

宏和函数的区别如下:

宏做的是简单的字符串替换(注意是字符串的替换,不是其他类型参数的替换),而函数的参数的传递,参数是有数据类型的,可以是各种各样的类型;

宏的参数替换是不经计算而直接处理的,而函数调用是将实参的值传递给形参;

宏占用的是编译的时间,而函数占用的是执行时的时间。即宏是在编译之前进行的,先用宏体替换宏名,然后再编译;而函数是编译之后,在执行时,才调用的;

宏的参数是不占内存空间的,因为只是做字符串的替换,而函数调用时的参数传递则是具体变量之间的信息传递,形参作为函数的局部变量,是占用内存的;

函数的调用是需要付出一定的时空开销的,因为系统在调用函数时,要保留现场,然后转入被调用函数去执行,调用完,再返回主调函数,此时再恢复现场,这些操作在宏中是没有的。

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

    关注

    180

    文章

    7527

    浏览量

    128258
  • 函数
    +关注

    关注

    3

    文章

    3864

    浏览量

    61304
  • 代码
    +关注

    关注

    30

    文章

    4554

    浏览量

    66726
收藏 人收藏

    评论

    相关推荐

    AD7280AWBSTZ和AD7280ABSTZ之间到底有什么区别

    替代吗?在网上找到的两个芯片的相关数据都是一样的,AD7280AWBSTZ和AD7280ABSTZ之间到底有什么区别
    发表于 01-08 06:36

    定义和函数到底有什么区别? - 第1节 #硬声创作季

    单片机物联网硬件函数代码
    充八万
    发布于 :2023年09月01日 17:09:06

    定义和函数到底有什么区别? - 第3节 #硬声创作季

    单片机物联网硬件函数代码
    充八万
    发布于 :2023年09月01日 17:10:46

    定义和函数到底有什么区别? - 第7节 #硬声创作季

    单片机物联网硬件函数代码
    充八万
    发布于 :2023年09月01日 17:14:07

    ARM Cortex-M0与Cortex-M0+到底有什么区别

    ARM Cortex-M0与Cortex-M0+到底有什么区别
    发表于 01-04 23:15

    同时DSP2812的源文件,命名不同,到底有什么区别

    同时DSP2812的源文件,命名不同,到底有什么区别?新建DSP工程时,到底用那种文件呢?讲究吗?
    发表于 04-07 12:57

    LED恒压电源和恒流电源到底有什么区别

    LED恒压电源和恒流电源到底有什么区别
    发表于 12-07 14:53

    乘法器与调制器到底有什么区别

    乘法器与调制器到底有什么区别?调制函数的建模方法是什么?
    发表于 04-09 06:33

    USB 3.0和USB 2.0到底有什么区别呢?

    图文讲解USB 3.0和USB 2.0到底有什么区别呢?
    发表于 05-19 07:12

    KEIL、uVision、MDK、KEIL C51、RealView它们到底有什么区别

    KEIL、uVision、MDK、KEIL C51、RealView它们到底有什么区别,又有什么联系?
    发表于 07-01 09:08

    FPGA和CPLD到底有什么区别?求具体例子说明

    FPGA和CPLD到底有什么区别,还有VHDL,一直分不清他们什么差别。求具体例子说明
    发表于 04-23 11:49

    ARM和DSP到底有什么区别

    现在在学ARM,想知道ARM和DSP到底有什么区别?为什么有些地方用DSP有些用ARM
    发表于 10-19 07:20

    C语言函数中的传值和传指针到底有什么区别

    我们可能听过C语言中的传值和传指针,在其他语言中,也有传引用一说,那么他们到底有什么区别呢?如果你还不能准确地分辨,就该好好了解一下了。
    的头像 发表于 09-08 10:14 4770次阅读

    智能照明和传统照明的系统到底有什么区别

    电子发烧友网站提供智能照明和传统照明的系统到底有什么区别资料免费下载
    发表于 11-26 06:41 26次下载

    FPC与传统PCB到底有什么区别.zip

    FPC与传统PCB到底有什么区别
    发表于 03-01 15:37 4次下载