我想要:

int a = 2;
int b = 3;
// ...

PRINT1(a, b, ...);
PRINT2(a, b, ...);
PRINT1应该扩展为:
std::cout << "a = " << a << ", b = " << b << ... << std::endl;
// note: in "a = ...", "a" is the name of the variable, i.e.:
// PRINT(bar, ...) should print "bar = ..."

PRINT2应该扩展为(使用cppformat):
fmt::print("a = {}, b = {}, ...", a, b, ...);

现在,我正在使用Boost.PP,必须编写PRINT((a)(b)(c)...)才能实现类似于第一种情况的效果,但是如果我可以仅使用逗号代替会更好。解决其中一个问题的方法可能很容易就可以同时解决。

最佳答案

您可以使用BOOST_PP_TUPLE_TO_SEQ将其转换为序列,如下所示:

#define PRINT_ARGS(...) PRINT(BOOST_PP_TUPLE_TO_SEQ((__VA_ARGS__)))

09-06 20:39