用可变参数宏(variadic macros)传递可变参数表

C语言中的可变参数宏(Variadic Macros) 可变参数宏允许在宏定义时使用一个或多个参数,并且这个参数的数量可以是可变的。在 C 语言中,宏参数通常通过...来表示。让我们从一个简单的示例开始,创建一个宏,该宏接受任意数量的参数并将它们打印出来。可变参数宏(Variadic Macros)是 C99 标准引入的一个特性,它允许宏接收可变数量的参数,增加了宏的灵活性。通过关键字,宏可以动态地展开传入的参数。可变参数宏广泛应用于日志、调试、代码生成等场景。使用时需要注意处理空参数、参数个数以及避免性能问题。 阅读详情

你可能很熟悉在函数中使用可变参数表,如:
 
void printf(const char* format, …);

直到最近,可变参数表还是只能应用在真正的函数中,不能使用在宏中。

C99编译器标准终于改变了这种局面,它允许你可以定义可变参数宏(variadic macros),这样你就可以使用拥有可以变化的参数表的宏。可变参数宏就像下面这个样子:

#define debug(…) printf(__VA_ARGS__)

缺省号代表一个可以变化的参数表。使用保留名 __VA_ARGS__ 把参数传递给宏。当宏的调用展开时,实际的参数就传递给 printf()了。例如:

Debug(“Y = %d/n”, y);

而处理器会把宏的调用替换成:

printf(“Y = %d/n”, y);

因为debug()是一个可变参数宏,你能在每一次调用中传递不同数目的参数:

debug(“test”); file://一个参数

可变参数宏不被ANSI/ISO C++ 所正式支持。因此,你应当检查你的编译器,看它是否支持这项技术。

 
ICC2:使用analyze_lib_cell_placement检查lib cell的pass rate 我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?在place之前需要使analyze_lib_cell_placement命令去检查lib cell在当前的site row/power plan/legalize设置的环境下能够正常place和legalize。下面分享一个脚本去报告pass rate低于2%的lib cell。 阅读详情

相关推荐

U8+ 新建账套

一、登录 账套主管:demo 对账套有修改权限,有账套库权限 系统管理员:admin 其他所有权限 二、新建账套 admin登录–>点击系统管理–>账套–>建立 选择了参照已有账套结转期初:就是上一个的期末数据作为这一次新表的期初数据 启用会计期一旦选择更改不了。 ...

茶茶很困i 3694

C++中可变参数宏

可变参数宏(Macro With Variable Number of Arguments or Variadic Macro) 是指我们可以像定义能够接受不同数量参数的普通C++函数一样,定义一个能够接受不同数量参数宏。

TABE_的博客 1719

昇腾310B实战:FFmpeg硬件加速全流程解析与性能优化

本文详细解析了昇腾310B与FFmpeg硬件加速的全流程,包括环境配置、性能优化及常见问题排查。通过实战案例展示,昇腾310B在视频转码中性能提升可达6倍,同时降低功耗,特别适合多媒体处理和高性能计算场景。

m3n5b7v8c9x的博客 735

C/C++ 可变参数宏方法总结

C/C++ 中可变参数宏方法的总结归纳和应用场景介绍

Sharpneo的博客 2453

稀疏变分高斯过程【超简单,全流程解析,案例应用,简单代码】

稀疏变分高斯过程(Sparse Variational Gaussian Processes, SVGP)是一种高效的高斯过程(GP)近似方法,它使用一组称为引入点的固定数据点来近似整个数据集。这种方法大大减少了高斯过程模型的计算复杂度,使其能够适用于大数据集。下面是SVGP的详细数学过程。在标准高斯过程中,给定数据集xiyii1N{(xi​yi​i1N​,目标是学习一个映射fff,其中f∼GPmkf∼GPmkmmm是均值函数,kkk。

刘文凯的博客 3658

儿童启蒙教育APP

pinyinList.add(createPinyin("a", "啊,像阿姨的阿", R.raw.pinyin_a));pinyinList.add(createPinyin("i", "衣,像衣服的衣", R.raw.pinyin_i));pinyinList.add(createPinyin("u", "乌,像乌鸦的乌", R.raw.pinyin_u));pinyinList.add(createPinyin("ü", "鱼,像小鱼的鱼", R.raw.pinyin_v));-- 固定竖屏 -->

寒寒豆豆软件公司的博客 167

C++中可变参数宏定义用法实践

本博文的目的是记录在C++中使用可变参数宏定义的过程,通过一些实际编写的代码和查看效果,来熟悉可变参数宏定义的使用方法和注意事项。 由于查询的资料来看,这种可变参数宏定义实际表现效果与所用的语言和编译器有关,因此首先列出我下面所有测试代码所用的语言和编译器版本,方便大家实际对照。 编译环境: 语言: C++ 11 编译器: gcc 5.4.0 系统: Ubuntu16.04 C++宏定义基本概...

zhanghm1995的博客 1万+

华为OD机试真题2026双机位C卷 C语言 实现【明日之星选举】

给定一组选票votes。votes[i]代表第 i 张选票的内容,包含一个字符串"zhangsan,hanmei",表示推荐zhangsan为明日之星,反对 hanmei 称为明日之星。赞成或反对使用逗号(,)分割。 给定一个数组n,表示最后将筛选出赞成票最多的n个人,如果赞成票相同,则反对票越少,排序越靠前;如果赞成票和反对票都相同,则按照姓名字典序升序排序。

MISAYAONE的博客 184

C/C++宏定义中可变参数 __VA_ARGS__ 的理解

用可变参数宏(variadic macros)传递可变参数表 你可能很熟悉在函数中使用可变参数表,如: void printf(const char* format, ...); 一直以来,可变参数表还是只能应用在真正的函数中,不能使用在宏中。 C99编译器标准终于改变了这种局面,它允许你可以定义可变参数宏(variadic macros),这样你就可以使用拥有可以变化的参数表的宏。可...

lijian2017的博客 8872

基于STM32设计自动输液监测系统(241)

该系统集成了液位传感模块、光电传感器、电机模块、按键模块和OLED显示屏等多个功能模块,以实现全面的输液过程监控和控制。液位传感模块能够实时监测输液瓶中的液位,当液位到达限定值时,系统会自动控制步进电机夹紧输液管,并发出报警提醒,确保输液过程不会因液位过低而中断。

1341

(王道408考研数据结构)第二章线性表-第一节:线性表的定义和基本操作

文章目录一:线性表的定义二:线性表的基本操作 一:线性表的定义 线性表(Linear List):零个或多个数据元素的有限序列 元素之间是有顺序的 若元素存在多个,则第一个元素无前驱,最后一个元素无后继,其他元素都有且只有一个前驱和后继 线性表强调有限,“所有的整数按递增次序排列”很明显不是线性表 线性表可以表示为 L=(a1,a1,...,ai+1,...,an)L=(a_{1},a_{1},...,a_{i+1},...,a_{n})L=(a1​,a1​,...,ai+1​,...,an​) a

快乐江湖的博客 3705

[转载]用可变参数宏(variadic macros)传递可变参数表

注意:_VA_ARGS__ 从VS2005才开始支持 在 GNU C 中,宏可以接受可变数目的参数,就象函数一样,例如: #define pr_debug(fmt,arg...) printk(KERN_DEBUG fmt,##arg) 用可变参数宏(variadic macros)传递可变参数表 你可能很熟悉在函数中使用可变参数表,如: void printf(const char* forma...

weixin_33943347的博客 93

《QGIS快速入门与应用基础》293:色带调整与透明设置

详细讲解了QGIS中遥感影像色带调整与透明设置的核心技术,帮助用户将遥感成果从基础合成提升到专业出图标准。主要内容包括: 色带精细化调整: 多波段真/假彩色合成的优化技巧(Gamma校正、色彩平衡、色阶端点校准) 单波段栅格数据的伪彩色规范设置(行业标准色带选择与分类方法) 透明设置: 研究区黑边/白边的消除方法 多图层叠加时的透明融合技巧 特定地物的差异化半透明显示 实用建议: 提供行业标准参数模板和效果对比图 标注新手操作红线和常见问题排查 强调符合遥感行业规范的可视化要求。

LuckyHanMo的博客 356

用可变参数宏(variadic macros)传递可变参数表void printf(const char* format, …);

在 GNU C 中,宏可以接受可变数目的参数,就象函数一样,例如: #define pr_debug(fmt,arg...) \ printk(KERN_DEBUG fmt,##arg) 用可变参数宏(variadic macros)传递可变参数表 你可能很熟

佛系程序员 1019

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

带参数的宏比函数长Linux进程通信,用可变参数宏(variadic macros)传递可变参数表...

注意:_VA_ARGS__ 从VS2005才开始支持===========在 GNU C 中,宏可以接受可变数目的参数,就象函数一样,例如:#define pr_debug(fmt,arg...) printk(KERN_DEBUG fmt,##arg)用可变参数宏(variadic macros)传递可变参数表你可能很熟悉在函数中使用可变参数表,如:void printf(const char*...

weixin_35293785的博客 215

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

C语言可变参数宏定义方法

在GNU C中,宏可以接受可变数目的参数,就象函数一样,例如:  1 2 #define pr_debug(fmt,arg...) \ printk(KERN_DEBUG fmt, ##arg) 用可变参数宏(variadic macros)传递可变参数表  你可能很熟悉在函数中使用可变参

做一个有技术追求的人 2万+

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

GNU C和C99标准中的可变参数宏(variadic macros)

用可变参数宏(variadic macros)传递可变参数表 你可能很熟悉在函数中使用可变参数表,如: void printf(const char* format, …); 直到最近,可变参数表还是只能应用在真正的函数中,不能使用在宏中。 C99编译器标准终于改变了这种局面,它允许你可以定义可变参数宏(variadic macros),这样你就可以使用拥有可以变化的参数表的宏。可变参数宏

不是码农 2808

可变参数宏

在 GNU C 中,宏可以接受可变数目的参数,就象函数一样,例如: #define pr_debug(fmt,arg...) \ printk(KERN_DEBUG fmt,##arg) 用可变参数宏(variadic macros)传递可变参数表 你可能很熟悉在函数中使用可变参数表,如: void printf(const char* format, …); 直到最近,可

657

gnu c语言可变参数,GNU C和C99标准中的可变参数宏(variadic macros)

用可变参数宏(variadic macros)传递可变参数表你可能很熟悉在函数中使用可变参数表,如:void printf(const char* format, …);直到最近,可变参数表还是只能应用在真正的函数中,不能使用在宏中。C99编译器标准终于改变了这种局面,它允许你可以定义可变参数宏(variadic macros),这样你就可以使用拥有可以变化的参数表的宏。可变参数宏就像下面这个样子...

weixin_39569753的博客 386

可变参数宏__VA_ARGS__

http://blog.sina.com.cn/s/blog_661314940100qmfg.html   可变参数宏__VA_ARGS__ 在 GNU C 中,宏可以接受可变数目的参数,就象

WINGCREATE的专栏 1149

C++可变参数,“## __VA_ARGS__”宏的介绍和使用

一、可变宏参数 在GNU C中,宏可以接受可变数目的参数,就象函数一样,例如: #define pr_debug(fmt,arg...) \ printk(KERN_DEBUG fmt, ##arg) 用可变参数宏(variadic macros)传递可变参数表 你可能很熟悉在函数中使用可变参数表,如: void printf(const char* format, ...); ...

yuleidnf的博客 4466
上一篇: 【转】如何在NP下读写游戏内存及如何进入NP进程
下一篇: 使用MDI时,有时StatusBar窗格文本消失的处理
VChen
博客等级 码龄23年 1粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值