gpt4 book ai didi

c++ - 在可变参数宏中分配参数

转载 作者:太空狗 更新时间:2023-10-29 19:52:19 31 4
gpt4 key购买 nike

我想构造一个宏,它接受可变数量的参数,并以类似于下面所示示例的格式将第一个参数分配给每个后续参数:

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/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com