你是真的“C”——宏与函数的英雄本色

这篇具有很好参考价值的文章主要介绍了你是真的“C”——宏与函数的英雄本色。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


你是真的“C”——宏与函数的英雄本色

   
😎博客昵称:博客小梦
😊最喜欢的座右铭:全神贯注的上吧!!!
😊作者简介:一名热爱C/C++,算法等技术、喜爱运动、热爱K歌、敢于追梦的小博主!

😘博主小留言:哈喽!😄各位CSDN的uu们,我是你的博客好友小梦,希望我的文章可以给您带来一定的帮助,话不多说,文章推上!欢迎大家在评论区唠嗑指正,觉得好的话别忘了一键三连哦!😘
你是真的“C”——宏与函数的英雄本色

前言🙌

    哈喽各位友友们😊,我今天又学到了很多有趣的知识现在迫不及待的想和大家分享一下!😘我仅已此文,和大家分享你是真的“C”——宏与函数的英雄本色。都是精华内容,可不要错过哟!!!😍😍😍

一、何为宏?

在进行宏和函数的对比时,我们先了解一下什么是宏。

#define 定义宏

#define 机制包括了一个规定,允许把参数替换到文本中,这种实现通常称为宏(macro)或定义宏(define macro)。
下面是宏的申明方式:
#define name( parament-list ) stuff

其中的 parament-list 是一个由逗号隔开的符号表,它们可能出现在stuff中。

注意:

  • 参数列表的左括号必须与name紧邻
  • 如果两者之间有任何空白存在,参数列表就会被解释为stuff的一部分。
    举个栗子:
#define SQUARE( x ) x * x

二、宏和函数的对比: 😊

属性 #define定义宏 函数
代码长度 每次使用时,宏代码都会被插入到程序中。除了非常小的宏之外,程序的长度会大幅度增长 函数代码只出现于一个地方;每次使用这个函数时,都调用那个地方的同一份代码
执行速度 更快 存在函数的调用和返回的额外开销,所以相对慢一些
操作符优先级 宏参数的求值是在所有周围表达式的上下文环境里,除非加上括号,否则邻近操作符的优先级可能会产生不可预料的后果,所以建议宏在书写的时候多些括号。 函数参数只在函数调用的时候求值一次,它的结果值传递给函数。表达式的求值结果更容易预测
带有副作用的参数 参数可能被替换到宏体中的多个位置,所以带有副作用的参数求值可能会产生不可预料的结果 函数参数只在传参的时候求值一次,结果更容易控制
参数类型 宏的参数与类型无关,只要对参数的操作是合法的,它就可以使用于任何参数类型 函数的参数是与类型有关的,如果参数的类型不同,就需要不同的函数,即使他们执行的任务是相同的。
调试 宏是不方便调试的 函数是可以逐语句调试的
递归 宏是不能递归的 函数是可以递归的
数据类型作为参数 宏可以让类型作为参数 函数不能将类型作为参数

三、 #undef

这条指令用于移除一个宏定义。

#undef NAME
//如果现存的一个名字需要被重新定义,那么它的旧名字首先要被移除。

总结撒花💞

   本篇文章旨在分享宏与函数的对比的相关知识点。希望大家通过阅读此文有所收获!😘如果我写的有什么不好之处,请在文章下方给出你宝贵的意见😊。如果觉得我写的好的话请点个赞赞和关注哦~😘😘😘文章来源地址https://www.toymoban.com/news/detail-406553.html

到了这里,关于你是真的“C”——宏与函数的英雄本色的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 你是真的“C”——找单身狗~

        😎博客昵称:博客小梦 😊最喜欢的座右铭:全神贯注的上吧!!! 😊作者简介:一名热爱C/C++,算法等技术、喜爱运动、热爱K歌、敢于追梦的小博主! 😘博主小留言:哈喽! 😄各位CSDN的uu们,我是你的博客好友小梦,希望我的文章可以给您带来一定的帮助,话不

    2023年04月17日
    浏览(36)
  • 关于低代码开发,你是真的了解了吗?

    在低代码开发已是大势所趋的今天,不少企业都切身感受到了低代码开发带来的便利。低代码开发平台的优势在当下数字化浪潮中,为企业提供了定制专属的数字化解决方案。 低代码本身没有太强的行业属性,这也让低代码开发平台能够更加灵活地适应不同行业。目前低代码

    2024年02月05日
    浏览(54)
  • 你是真的“C”——求两个正数最小公倍数的3种境界~

        博客昵称:博客小梦😊 最喜欢的座右铭:全神贯注的上吧!!! 作者简介:一名热爱C/C++,算法等技术、喜爱运动、热爱K歌、敢于追梦的小博主! 博主小留言:哈喽! 😄各位CSDN的uu们,我是你的博客好友小梦,希望我的文章可以给您带来一定的帮助,话不多说,文

    2024年01月17日
    浏览(41)
  • C语言-程序环境和预处理(2)--带副作用的宏参数,宏与函数的对比,#undef,条件编译,文件包含

    上一篇文章–《C语言-程序环境和预处理(1)》讲述了程序的翻译环境和执行环境,编译、连接,预定义符号,#define,#符号和##符号的相关知识。 链接: 《C语言-程序环境和预处理(1)》 本篇文章,讲述带副作用的宏参数,宏与函数的对比,#undef,条件编译,文件包含的相

    2024年02月08日
    浏览(64)
  • 你真的了解MySQL日期函数吗?

    MySQL提供了丰富的日期和时间函数,用于处理和操作日期时间数据。本篇博文将深入介绍一些常用的MySQL日期函数,通过详细的例子带你了解这些函数的用法和实际应用。 CURDATE() 函数返回当前日期,不包含时间信息。 结果可能类似于: NOW() 函数返回当前日期和时间。 结果可

    2024年01月18日
    浏览(40)
  • 你真的理解qsort函数吗?带你深度剖析qsort函数

    魔王的介绍:😶‍🌫️一名双非本科大一小白。 魔王的目标:🤯努力赶上周围卷王的脚步。 魔王的主页:🔥大魔王不哭 我们初识C语言时,会做过让一个整型数组按照从小到大来排序的问题,我们使用的是冒泡排序法,但是如果我们想要比较其他类型怎么办呢,显然我们

    2023年04月24日
    浏览(41)
  • 创建一个英雄表(hero)

    1、创建一个英雄表(hero)         主键         name         nickname         address         groups         email         telphone     2、博客:window系统安装MySQL

    2024年01月22日
    浏览(21)
  • 超级英雄云计算的技术之旅

    博主 默语带您 Go to New World. ✍ 个人主页—— 默语 的博客👦🏻 《java 面试题大全》 🍩惟余辈才疏学浅,临摹之作或有不妥之处,还请读者海涵指正。☕🍭 《MYSQL从入门到精通》数据库是开发者必会基础之一~ 🪁 吾期望此文有资助于尔,即使粗浅难及深广,亦备添少许微薄

    2024年02月05日
    浏览(33)
  • 英雄算法联盟 | 六月算法集训顺利开始

      今天是 6 月 3 号,是 英雄算法联盟 —— 六月算法集训 的第 3 天。由于五月集训的时候,很大一部分的同学都感觉后面的内容太难,所以六月集训进行了一系列改革,如下:   1、所有内容和规划重新梳理,拉长时间线(见下文);   2、难度大幅度下降,力求把难

    2024年02月07日
    浏览(47)
  • 英雄表的创建 -- MySQL(2)

    目录 题目: 解答: 英雄表(hero) 主键 name nickname address groups email telephone 解答: 第一步: 进入数据库 第二步: 创建数据库并使用 第三步: 创建表hero  第四步: 向表中添加数据 第五步: 查看数据

    2024年01月20日
    浏览(21)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包