pt3*_*Nyc 3 c c++ c-preprocessor variadic-macros
我想构造一个宏,它接受可变数量的参数,并以类似于下面示例的格式将第一个参数分配给每个后续参数:
Call: MACRO(F,A)
Result: F:A
Call: MACRO(F,A,B,C)
Result: F:A F:B F:C
Run Code Online (Sandbox Code Playgroud)
我见过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__)))
Run Code Online (Sandbox Code Playgroud)
但是,我无法解决如何将此问题应用于我的问题.任何人都可以提供一个例子来实现上面显示的结果吗?谢谢!
使用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__))
Run Code Online (Sandbox Code Playgroud)
演示.这将(AFAIR)最多可以处理255个参数.
| 归档时间: |
|
| 查看次数: |
916 次 |
| 最近记录: |