您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> C/C++ >> 关于可变参数宏

关于可变参数宏

来源:网络整理     时间:2016/9/1 19:27:21     关键词:

关于网友提出的“ 关于可变参数宏”问题疑问,本网通过在网上对“ 关于可变参数宏”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: 关于可变参数宏
描述:

可变参数宏能不能这么搞:
#define FUCK(...) xxxxxxxxxxx
FUCK(a)      ------> f(a)
FUCK(a,b)    ------> f(a),f(b)
FUCK(a,b,c)  ------> f(a),f(b),f(c)
......


解决方案1:

我还真用过可变参数的宏, 不用用法和你的不一样, 我是这样用的:


#define msg_scanf(fmt, ...)  msg.__scanf(fmt "%n", __VA_ARGS__ , &msg.m_byteReaded)

你的那个其实也可以实现:

#include 
#include 
#define FUCK(...) _fuck(-1, __VA_ARGS__, -1)
void fuck(int x) { printf("%d\n", x); }
void _fuck(int start, ...)
{
va_list arglist;
va_start(arglist, start);
int v = va_arg(arglist, int);
while(v != -1)
{
fuck(v);
v = va_arg(arglist, int);
}
}
int main()
{
FUCK(1, 2, 3);
FUCK(8, 9, 10, 11);
}
解决方案2:

宏的展开逻辑导致这东西没办法真正意义上循环。还是用变参模板吧。

解决方案3:

把有限的生命浪费在品尝/品鉴无穷多种的语法糖中,我认为不值当。


以上介绍了“ 关于可变参数宏”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/3709360.html

相关图片

相关文章