1

我要做的就是使用宏来生成类名,它需要一点连接,就是这样。除非它惨败。这真的是在磨我的齿轮。

我在某处之前定义了一个宏...

#define CLASSNAME myclassname
...

我正在尝试使用类型生成生成的类名......

#define GETNAME(x) x
#define UNIQUENAME(T) GETNAME(CLASSNAME) ## _ ## T

UNIQUENAME(int)   //I want it to make: myclassname_int
                  // instead it makes: myclassname _int
// SUBTLE, but screws everything up! can't have that space in the middle.

我检查了另一个配置...

#define UNIQUENAME(T) GETNAME(CLASSNAME)M ## M_ ## T
//which returns: myclassname MM_int

所以空间肯定来自 GETNAME 结果。唯一的问题是,我不知道如何摆脱它。我已经尝试了太久了。

任何事情都会有所帮助。谢谢!

4

1 回答 1

1
#define ClassName       myclassname

#define Paste(a, b)     a ## _ ## b
#define Helper(a, b)    Paste(a, b)
#define UniqueName(T)   Helper(ClassName, T)

UniqueName(int)

是宏扩展的解释以及为什么我们需要这样的辅助宏。

于 2013-08-30T02:15:22.950 回答