首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何制作可变数量的宏(可变数量的参数)

如何制作可变数量的宏(可变数量的参数)
EN

Stack Overflow用户
提问于 2009-03-25 02:08:15
回答 6查看 213.8K关注 0票数 216

我想用C语言编写一个宏,它可以接受任意数量的参数,而不是特定数量的参数

示例:

代码语言:javascript
复制
#define macro( X )  something_complicated( whatever( X ) )

其中X是任意数量的参数

我需要它,因为whatever是重载的,可以用2个或4个参数调用。

我尝试定义宏两次,但第二个定义覆盖了第一个定义!

我正在使用的编译器是g++ (更具体地说,是mingw)

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-03-25 02:16:28

VC++编译器也支持C99方式。

代码语言:javascript
复制
#define FOO(fmt, ...) printf(fmt, ##__VA_ARGS__)
票数 325
EN

Stack Overflow用户

发布于 2011-09-05 05:25:30

__VA_ARGS__是实现这一目标的标准方法。如果没有必要,不要使用特定于编译器的hack。

我真的很恼火,因为我不能评论最初的帖子。在任何情况下,C++都不是C的超集,用C++编译器编译C代码真的很愚蠢。不要做唐尼不做的事。

票数 44
EN

Stack Overflow用户

发布于 2009-03-25 02:14:47

我不认为这是可能的,你可以用双括号来伪装...只要你不需要单独的参数。

代码语言:javascript
复制
#define macro(ARGS) some_complicated (whatever ARGS)
// ...
macro((a,b,c))
macro((d,e))
票数 31
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/679979

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档