关于可变参数宏
可变参数宏能不能这么搞:
#define FUCK(...) xxxxxxxxxxx
FUCK(a) ------> f(a)
FUCK(a,b) ------> f(a),f(b)
FUCK(a,b,c) ------> f(a),f(b),f(c)
......
[解决办法]
把有限的生命浪费在品尝/品鉴无穷多种的语法糖中,我认为不值当。
[解决办法]
宏的展开逻辑导致这东西没办法真正意义上循环。还是用变参模板吧。
[解决办法]
我还真用过可变参数的宏, 不用用法和你的不一样, 我是这样用的:
#define msg_scanf(fmt, ...) msg.__scanf(fmt "%n", __VA_ARGS__ , &msg.m_byteReaded)
你的那个其实也可以实现:
#include <stdio.h>
#include <stdarg.h>
#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);
}