我一直在编写 C++,但对宏的经验很少。我已经阅读了有关此主题的其他一些问题,但我无法将它们完全转化为我的问题。
我想定义一个宏,以便编码ENUM_PRAGMA(foo)
产生_Pragma("enum(foo)")
我打算产生的效果#pragma enum(foo)
(编译器支持_Pragma("string")
。)
我尝试了多种变体
#define ENUM_PRAGMA(siz) \
_Pragma( "enum(" #siz ")" )
但不能让他们中的任何一个工作。
基于如何实现为 _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 没有引用字符串。
任何人都可以请幽默我吗?非常感谢。