最近写一些东西,其中一些用到可变参数宏会非常方便
并且学习到了获得可变参数宏参数数量的方法,如下
[mw_shl_code=c,true]
#define __pm_arguments_expand(...) __VA_ARGS__
#define __pm_arguments_map(
_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17,
_18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, n, ...) n
#define __pm_arguments_count(...) __pm_arguments_expand(__pm_arguments_map(0, __VA_ARGS__,
32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17,
16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0))
[/mw_shl_code]
原理是通过参数位置差获得n位置的值,其值就是参数数量(我们传过去的)的值(vs下0个参数值为1,clang下0-32都正确)
不够霸气 奇淫技巧 是不是更好
一周热门 更多>