这是如何工作的? 一个C99 / C ++ 11可变参数macros如何实现扩展到不同的事物,仅仅有多less个论点?
所以我有一个在GCC中很好用的macros,但是在微软的C ++编译器中没有。 我希望有人可能知道一个解决方法,或者可以向我解释为什么这样做。 我相信这个macros并不完全是“标准的”,但它确实会帮助我。 这是macros的一个function性的例子: #define VA_NARGS_IMPL(_1, _2, _3, _4, _5, N, …) N #define VA_NARGS(…) VA_NARGS_IMPL(__VA_ARGS__, 5, 4, 3, 2, 1) #define FULLY_EXPANDED(count, …) \ MAC ## count (__VA_ARGS__) #define SEMI_EXPANDED(count, …) FULLY_EXPANDED(count, __VA_ARGS__) #define EXPAND_THESE(…) SEMI_EXPANDED(VA_NARGS(__VA_ARGS__), __VA_ARGS__) #define ACTUAL_MACRO(x) parent->GetProperty<x>(); #define MAC1(a) ACTUAL_MACRO(a) #define MAC2(a,b) MAC1(a) ACTUAL_MACRO(b) #define MAC3(a,b,c) MAC2(a,b) ACTUAL_MACRO(c) #define MAC4(a,b,c,d) […]