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 回答