我想知道是否有可能在宏参数上编写宏foreach。这是要执行的操作:
#define PRINT(a) printf(#a": %d", a)
#define PRINT_ALL(...) ? ? ? THE PROBLEM ? ? ?
以及可能的用法:
int a = 1, b = 3, d = 0;
PRINT_ALL(a,b,d);
这是我到目前为止所取得的成就
#define FIRST_ARG(arg,...) arg
#define AFTER_FIRST_ARG(arg,...) , ##__VA_ARGS__
#define PRINT(a) printf(#a": %d", a)
#define PRINT_ALL PRINT(FIRST_ARG(__VA_ARGS__)); PRINT_ALL(AFTER_FIRST_ARG(__VA_ARGS__))
这是一个递归宏,这是非法的。另一个问题是stop condition递归。
回首忆惘然