我想要:
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__)))