我所要做的就是使用宏来生成类名,它需要一些concat,就是这样。除了它悲惨地失败。这真的在磨练我的齿轮。
我在某个地方定义了一个宏...
#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结果。唯一的问题是,我不知道如何摆脱它。我现在已经试过太久了。
一切都会有所帮助。 谢谢!
答案 0 :(得分: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)
Here解释了宏扩展以及为什么我们需要像这样的辅助宏。