我被困在这里了...
#define CONCAT(a,b) BOOST_PP_STRINGIZE(BOOST_PP_CAT(a,b))<br/>#define CONCAT1(a,b,c) CONCAT(CONCAT(a,b),c) and so on.
即使有 20 个参数,我如何生成 CONCAT 宏?也许我可以使用 BOOST_PP_SEQ_FOR_EACH 但我不明白该怎么做?
最佳答案
这取决于您的用例。
这个
#include <boost/preprocessor/cat.hpp>
#include <boost/preprocessor/stringize.hpp>
#include <boost/preprocessor/seq/for_each.hpp>
#define SEQ (a)(b)(c)
BOOST_PP_STRINGIZE(BOOST_PP_SEQ_CAT(SEQ)) // "abc"
将连接序列然后将其字符串化。也可以简单地将每个参数字符串化,因为 "a""b""c"
相当于 "abc"
。
#define MY_STRINGIZE(r, data, elem) BOOST_PP_STRINGIZE(elem)
BOOST_PP_SEQ_FOR_EACH(MY_STRINGIZE, _, SEQ)
关于c++ - 如何生成用于连接字符串的可变参数宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11575241/