【发布时间】:2013-03-16 17:26:15
【问题描述】:
是否可以在 C++ 中编写宏,AFTER 扩展会输出反斜杠符号?
现在我正在使用代码:
#define SOME_ENUM(XX) \
XX(FirstValue,) \
XX(SecondValue,) \
XX(SomeOtherValue,=50) \
XX(OneMoreValue,=100) \
但是我想写一个宏,它会生成上面的代码,所以我希望能够写:
ENUM_BEGIN(name) // it should output: #define SOME_ENUM(XX) \
ENUM(ONE) // it should output: XX(ONE,) \
//...
但我无法编写像ENUM_BEGIN 这样的宏,因为它应该扩展为末尾带有反斜杠的东西。
在 C++ 中可以吗?
【问题讨论】:
-
如果你真的想让你的代码不可读,还有比这更简单的方法。
-
我认为预处理器不会处理作为宏结果的预处理器指令。此外,写最后一句话让我相信这可能是糟糕的设计......
-
Jerry 我希望我的代码 可读 - 我正在尝试改进此处找到的解决方案:stackoverflow.com/questions/147267/…。
-
是否有任何 C++ 宏扩展需要以不带引号的反斜杠开头?
-
@danilo2:我并没有真正想到 意图 会产生难以理解的混乱——但我认为这几乎是不可避免的结果反正你要去哪里。 IOW,这是我的一个微妙暗示的想法,我认为你正在做的事情更有可能增加问题而不是产生真正的解决方案。
标签: c++ macros enums code-generation