【发布时间】:2012-09-07 03:34:14
【问题描述】:
我写 C++ 已经有一段时间了,但对宏的经验很少。我已经阅读了有关此主题的其他一些问题,但我无法将它们完全转化为我的问题。
我想定义一个宏,以便编码ENUM_PRAGMA(foo) 产生_Pragma("enum(foo)"),我打算产生#pragma enum(foo) 的效果
(编译器支持_Pragma("string")。)
我尝试了多种变体
#define ENUM_PRAGMA(siz) \
_Pragma( "enum(" #siz ")" )
但无法让它们中的任何一个工作。
基于How do I implement a macro that creates a quoted string for _Pragma?我试过
#define HELPER1(x) enum( x )
#define HELPER2(y) HELPER1(#y)
#define ENUM_PRAGMA(siz) _Pragma(HELPER2(siz))
但我仍然不完全在那里。 (错误是 string literal was expected but enum was found 所以我猜我的 HELPER2 没有引用字符串。
任何人都可以在这方面取笑我吗?非常感谢。
【问题讨论】: