C语言用宏计算参数个数
尽管对于现代C++而言,计算参数个数不是什么难事。不过还是看到了这个古老的用宏来做的奇淫技巧。
#include <stdio.h>
#define get_argc_(_1, _2, _3, _4, _5, _6, _7, N, ...) N
#define get_argc(...) get_argc_(__VA_ARGS__, 7, 6, 5, 4, 3, 2, 1, 0)
int main()
{
int n = get_argc(1, 2, 3, 4);
printf("%d", n);
return 0;
}
原理其实很简单,展开后通过参数和后面的序列填上宏的参数列表,刚好就能让N对应到参数个数上。