【发布时间】:2016-01-31 02:02:28
【问题描述】:
所以,我已经有一段时间没有用 C++ 编写任何东西了,现在我正在使用 C++11 和宏来开发一个项目。
我知道通过使用 stringify 运算符我可以做到这一点:
#define TEXT(a) #a //expands to "a"
我应该如何使用预处理器来识别 + 和 * 之类的标记来做到这一点:
#define TEXT(a)+ ??? //want to expand to "a+"
#define TEXT(a)* ??? //want to expand to "a*"
什么时候输入必须是那个语法?
我试过这样做:
#define + "+"
但它当然不起作用。如何让预处理器识别这些标记?
注意: 这实际上是定义和使用正则表达式的小型语言项目的一部分,其中宏的结果字符串将在 regex 中使用。语法是给定的,我们必须照原样使用它而不对其进行任何更改。
例如
TEXT(a)+ 用于制作正则表达式:std::regex("a+")
不改变TEXT(a) 扩展为“a”的事实
【问题讨论】:
标签: c++ c++11 macros c-preprocessor