c 语言 宏 可变 参数,C / C++ 可变参数的宏,__VA_ARGS__,...

本文详细介绍了C/C++中宏的可变参数使用方法,包括__VA_ARGS__的使用,以及不同编译器扩展的宏替换方式。通过实例展示了如何使用test1到test4四个宏实现相同的功能,并定义了用于调试的日志输出宏TRACE1至TRACE4,所有这些宏都展示了可变参数的灵活性。
摘要由CSDN通过智能技术生成

C++ Builder 参考手册 ➙ C / C++ 可变参数的宏,__VA_ARGS__,...

宏的可变参数的写法

例子

一. 宏的可变参数的写法

1. 单独的 ... 和 __VA_ARGS__

标准 C / C++ 语言宏定义的参数允许用三个小数点 ... 表示这里是可变参数,在宏替换的时候,用 __VA_ARGS__ 表示 ... 位置的所有的参数。

例如:

#define test1(...) printf(__VA_ARGS__)

#define test2(fmt, ...) printf(fmt, __VA_ARGS__)

2. 参数后面带三个小数点

很多编译器扩展了可变参数的宏替换,这样的写法更容易记忆,宏定义的参数后面可以带三个小数点,表示这里是可变参数,宏替换的时候,直接写这个参数就表示这个位置是所有的可变参数了。

例如:

#define test3(fmt...) printf(fmt)

#define test4(fmt, args...) printf(fmt, args)

注:某些编译器需要用 ##args 表示 args... 位置所有的参数的宏替换。

二. 例子

1. 测试本文前面提到的 test1 到 test4 替换 printf

#include

#define test1(...) printf(__VA_ARGS__)

#define test2(fmt, ...) printf(fmt, __VA_ARGS__)

#define test3(fmt...) printf(fmt)</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值