gpt4 book ai didi

C:使用 token 粘贴展开宏

转载 作者:太空狗 更新时间:2023-10-29 16:32:24 25 4
gpt4 key购买 nike

下面是我创建的一些宏:

#define MODULE_NAME moduleName
#define MODULE_STRUCT MODULE_NAME ## _struct
#define MODULE_FUNCTION(name) MODULE_NAME ## _ ## name

在这些定义之后,我希望进行以下扩展:

MODULE_STRUCT   -->   moduleName_struct
MODULE_FUNCTION(functionName) --> moduleName_functionName

但是,当我添加标记粘贴运算符时,MODULE_NAME 在 MODULE_FUNCTION 和 MODULE_STRUCT 中的扩展不再发生......将它们粘贴在一起时似乎将 MODULE_NAME 视为文字字符串。

有解决办法吗?

最佳答案

在 C 中, token 粘贴运算符 ## 的操作数不会展开。

你需要第二层间接来获得扩展。

#define CAT(x, y) CAT_(x, y)
#define CAT_(x, y) x ## y

关于C:使用 token 粘贴展开宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12630548/

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