2
我一直在編寫C++一段時間,但只有很少的宏觀體驗。我已閱讀了關於此主題的其他一些問題,但我無法將它們翻譯成我的問題。如何將宏定義爲具有宏參數的_Pragma
我想定義一個宏使得編碼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未引用的字符串。
任何人都可以請幽默我這?謝謝了。