C语言嵌套宏的展开规则

一般的宏嵌套展开规则是由内向外,先将内层宏展开,再把外层宏展开:

#include #define A(x) (x + 5)#define B(x) (x * 5)void main(void){ printf(“%dr”, B(A(2)));}

输出:

35

嵌套宏B(A(2))会先展开为B((2 + 5)),然后再展开为((2 + 5) * 5),所以最终结果为35


如果宏的参数直接带有#,则不会展开内层的嵌套宏

#include #define STR(x) #x#define TO_STR(x) STR(x)#define ADD(a, b) (a + b)void main(void){ printf(“%sr”, STR(ADD(3, 4))); printf(“%sr”, TO_STR(ADD(3, 4)));}

输出:

ADD(3, 4)(3 + 4)

因为STR宏的参数直接带有#,所以STR内部嵌套的内容不会被进一步展开,故STR(ADD(3, 4))输出为ADD(3, 4);

因为TO_STR宏的内容并没有#,所以嵌套的宏ADD(3, 4)依旧可以展开,故TO_STR(ADD(3, 4))输出结果为(3 + 4);


如果宏的参数直接带有##,则会先将参数通过##拼接,然后再依次进行展开

#include #define STR(x)#x#define TO_STR(x)STR(x)#define DEF_VAR(a)var_##a#define PARAM(x)param_##xvoid main(void){ printf(“%sr”, TO_STR(DEF_VAR(PARAM(10))));}

输出:

var_PARAM(10)

由于DEF_VAR中带有##所以会先将里面的内容使用##拼接,所以会最先展开为TO_STR(var_PARAM(10)),由于展开后PARAM(10)已经变成了var_PARAM(10),已经不是有效的宏了,所以最终再经过TO_STR的转换后,结果就是var_PARAM(10)

郑重声明:本文内容及图片均整理自互联网,不代表本站立场,版权归原作者所有,如有侵权请联系管理员(admin#wlmqw.com)删除。
用户投稿
上一篇 2022年7月4日 18:08
下一篇 2022年7月4日 18:08

相关推荐

  • 短视频策划内容的3个要点(短视频策划内容怎么做)

    短视频在制作时,内容框架非常重要。如果直奔主题,然后结束,聚卓告诉你,这样的短视频已经过时了。现在的短视频需要框架的,但不是任何框架,它需要一种易于理解和消化的框架。而且,现在大多…

    2022年11月27日
  • 存储过程语法(sql server存储过程语法)

    今天小编给各位分享存储过程语法的知识,其中也会对sql server存储过程语法进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧! oracle存储过程基本语法…

    2022年11月26日
  • 小红书平台的一些机制及玩法详解(小红书玩法有哪些)

    关于小红书 一:小红书平台的一些机制 1. 笔记内容的CES评分机制 2. 笔记流量入口与长尾效应 二:小红书优质笔记的特点(分维度、类型分析) 1.笔记的本身架构组成 维度 2.…

    2022年11月25日
  • 博客营销的3大优势解析(博客营销怎么做)

    不知不觉已经写了24篇文章,加上这篇是第25篇了,都是自己这几年来用过的营销方法,如果遇到有些不懂的,我会咨询我的朋友和同事帮忙,尽量让每一篇有价值,哪怕是对大家有一点点帮助也行,…

    2022年11月25日
  • 什么是内容营销策略如何策划一套成功的内容营销策略

    很多时候,营销人员会在创作营销内容时感到沮丧,这也是很多企业至今没用好数字化营销工具的重要原因之一。 举个例子,您可能会花上数小时期待制作一些令人惊叹的东西,实际却是得到很少的受众…

    2022年11月25日
  • 直播带货详细脚本(直播文案策划怎么写)

    短视频运营策划方案怎么写?涉及哪几个方面? 我在网上看到好多千篇一律的文章,关于【短视频运营策划方案】这一块,基本都是在讲账号的内容本身。 你内容做得再好,却不掌握算法的规律,能有…

    2022年11月25日
  • 闲鱼上怎么卖东西快?闲鱼赚钱必知技巧(怎么在闲鱼里面卖东西)

    自从闲鱼这个平台出现以后,随着这些年的发展,闲鱼也成为了很多人开店赚钱的重要途径。一些新人也想在闲鱼上试试水,看看能不能赚到钱。如今闲鱼上既可以卖二手闲置物品,也可以卖一些新品,那…

    2022年11月25日
  • 淘宝直播带货技巧分享(淘宝直播复制粘贴技巧)

    淘宝是大家喜欢的购物平台,不少人会自己在淘宝选购,也会在主播直播间购买,价格更实惠,现在很多商家都会开通直播带货功能,增加订单量,那么淘宝直播带货有哪些?下面小编为大家带来淘宝直播…

    2022年11月24日
  • 锐龙97900x参数规格跑分评测 锐龙97900x属于什么档次

    锐龙9 7900X是锐龙7000系列处理器中性能顶尖的型号之一,它采用了这一代标配的zen4架构和5nm制程工艺,那么它具体的参数跑分如何,在电脑上世纪发挥怎么样呢,下面就来看看锐…

    2022年11月24日
  • 淘宝直播新主播熬过三个月后怎么做起来(淘宝主播小田直播假货)

    想做直播带货,起步阶段都是比较难的,因此做主播一定要能坚持下去,大家所听到的这个主播月入十万那个主播月入百万,其实背后付出的东西远远是你们想不到的。那么,淘宝直播新主播熬过三个月后…

    2022年11月23日

联系我们

联系邮箱:admin#wlmqw.com
工作时间:周一至周五,10:30-18:30,节假日休息