需要帮助将可变宏扩展为字符串化名称和值序列
Need help expanding a variadic macro to a sequence of stringified names and values
我知道在C++中,我可以使用#指令获得宏参数的名称,如下所示:
#define FOO(value) #value
我想弄清楚的是如何将参数列表转换为一个更长的列表,其中也包括字符串名称。给定FOO(a, b, a+b)
,我想得到"a", a, "b", b, "a+b", a+b
。
我可以通过为多达N个参数的潜在序列创建N个宏来做到这一点,但有没有一种方法可以用可变宏来写这一点?
是的,您可以使用BOOST_PP_ENUM
迭代可变数据,并在每个扩展之间添加逗号:
#define FOO(...)
BOOST_PP_ENUM(
BOOST_PP_VARIADIC_SIZE(__VA_ARGS__),
MACRO,
BOOST_PP_VARIADIC_TO_TUPLE(__VA_ARGS__)
)
#define MACRO(z, n, data)
BOOST_PP_STRINGIZE(BOOST_PP_TUPLE_ELEM(n, data)), BOOST_PP_TUPLE_ELEM(n, data)
FOO(a, b, a+b) //"a", a , "b", b , "a+b", a+b
ENUM
获取迭代次数、宏和要提供给宏的数据。我们传递一个包含可变数据的PP元组。然后,宏访问索引为n
的元素。你可以在这里看到这幅作品。
相关文章:
- 需要帮助在 c++ 中将字符串转换为字符 ----错误 "const char *" 类型的值不能用于初始化 "char" 类型的实体
- 我需要帮助在一个类中输入两个字符串并获取其输出
- 需要帮助编写 for 循环以在字符串周围创建边框
- 需要帮助将字符串插入函数
- C 需要帮助的作业程序,该程序在文件列表中读取并在每个双重的双重列表中添加一个字符串
- 需要帮助理解' 字符串 ltrim(常量字符串 &) ' 的含义
- 我希望在字符串功能上提供一些帮助
- 寻找一种更快的方法来帮助减少/创建大量字符串列表
- 输入到字符串流并在单个语句中转换为字符串.可以没有帮助程序类
- 试图将字符串变为char数组,请帮助我仅在数组中获得所需的字符
- C 吊手游戏项目可帮助如何在字符串中找到字母
- 需要帮助以了解字符串出错的地方
- 需要帮助调试我的代码,以逆转字符串中的单词
- 我需要将Valus与字符串关联的帮助才能计算平均值
- 我需要帮助理解如何用C 中的多个字符串对设置或向量进行分类
- 需要帮助将c字符串从嵌入式SQL提取复制到单独结构中的另一个c字符串
- 在没有字符串或字符帮助的情况下查找数字的反面(例如:2500 reverse 0025)
- 在分隔符的帮助下对重复字符串进行矢量push_back
- C++ 请线程和字符串帮助
- 需要帮助弄清楚为什么我的反向字符串c++程序正在崩溃