猿问

如何生成变量宏(变量数)

如何生成变量宏(变量数)

我想用C写一个宏,它接受任意数量的参数,而不是特定的数字。

例子:

#define macro( X )  something_complicated( whatever( X ) )

哪里X是任意数量的参数

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

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

我正在使用的编译器是g+(更确切地说,是mingw)。


月关宝盒
浏览 703回答 3
3回答

红颜莎娜

C99方式,也支持VC+编译器。#define FOO(fmt, ...) printf(fmt, ##__VA_ARGS__)

慕桂英4014372

__VA_ARGS__是做这件事的标准方法。如果没有必要,不要使用特定于编译器的黑客。我真的很生气,因为我不能对原来的帖子发表评论。无论如何,C+不是C的超集,用C+编译器编译C代码真的很愚蠢。不要做唐尼不做的事。

holdtom

我不认为那是可能的,你可以用双生父母来假装.只要你不需要单独的争论。#define macro(ARGS) some_complicated (whatever ARGS)// ...macro((a,b,c))macro((d,e))
随时随地看视频慕课网APP
我要回答