2

私はしばらくの間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が文字列を引用していないと思います。

誰かがこれについて私をユーモアを交えてくれますか?どうもありがとう。

4

1 に答える 1

2

わかった。

汎用マクロ STRINGIFY を定義しました。

#define STRINGIFY(str) #str

ここで、実際のマクロは次のようになります。

#define ENUM_PRAGMA(siz) _Pragma(STRINGIFY(enum(siz)))

お待ち頂きまして、ありがとうございます。

于 2012-09-14T16:30:26.710 に答える