我想构造一个宏,它接受可变数量的参数,并以类似于下面所示示例的格式将第一个参数分配给每个后续参数:
Call: MACRO(F,A)
Result: F:A
Call: MACRO(F,A,B,C)
Result: F:A F:B F:C
我看过https://github.com/swansontec/map-macro以及递归解决方法的一般概念:
#define EVAL0(...) __VA_ARGS__
#define EVAL1(...) EVAL0 (EVAL0 (EVAL0 (__VA_ARGS__)))
#define EVAL2(...) EVAL1 (EVAL1 (EVAL1 (__VA_ARGS__)))
#define EVAL3(...) EVAL2 (EVAL2 (EVAL2 (__VA_ARGS__)))
#define EVAL4(...) EVAL3 (EVAL3 (EVAL3 (__VA_ARGS__)))
#define EVAL(...) EVAL4 (EVAL4 (EVAL4 (__VA_ARGS__)))
但我想不通如何将其应用于我的问题。任何人都可以提供一个例子来实现上面显示的结果吗?谢谢!
最佳答案
使用 Boost.PP:
#include <boost/preprocessor/seq/for_each.hpp>
#include <boost/preprocessor/variadic/to_seq.hpp>
#define TRANSFORM(r, data, elem) data:elem
#define MACRO(F, ...) \
BOOST_PP_SEQ_FOR_EACH(TRANSFORM, F, BOOST_PP_VARIADIC_TO_SEQ(__VA_ARGS__))
Demo .这将(AFAIR)适用于最多 255 个参数。
关于c++ - 在可变参数宏中分配参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27765387/