gpt4 book ai didi

c++ - 多级 c/c++ 宏 - 评估结果后的空格?

转载 作者:太空宇宙 更新时间:2023-11-04 03:54:01 25 4
gpt4 key购买 nike

我想做的就是使用宏来生成类名,它需要一些 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 结果。唯一的问题是,我不知道如何摆脱它。我已经尝试了太久了。

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

最佳答案

#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是对宏扩展的解释以及为什么我们需要这样的辅助宏。

关于c++ - 多级 c/c++ 宏 - 评估结果后的空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18523789/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com