4
#define Map(From, To, val)          \
        Map__##From__##To(val)


Map(TYPEA, TYPEB, 22);

上記のコードでは、なぜ拡張されているのかMap(TYPEA, TYPEB, 22);、拡張され Map__From__TYPEB(22);ていないのか疑問に思っていますMap__TYPEA__TYPEB(22);

拡張にはgcc-Eを使用しました。

4

2 に答える 2

6

From__はトークンではないためMap、プリプロセッサはそれを検索しません..修正は次のとおりです。

#define Map(From, To, val) \
        Map__##From##__##To(val)
于 2013-03-20T11:29:02.097 に答える
0
"#define ZERO 0" != "#define ZERO 0_"

同様に、スニペットではFrom != From_、したがって置き換えられません。実用的なソリューションは、@Aniket によって既に提供されています。

于 2013-03-20T11:33:40.260 に答える