gpt4 book ai didi

c++ - 宏到另一个宏,参数来自第一个宏

转载 作者:搜寻专家 更新时间:2023-10-31 01:20:40 24 4
gpt4 key购买 nike

我正在尝试让这个宏工作:

#define InitProperty(Name, Type) DefineMethods ( ##Name.Mode, Type, Name )

现在这似乎不起作用这让我:

DefineMethodsLenght.Mode(caller, Lenght) 

代替

DefineMethods(Lenght.Mode, caller, Lenght);

这里发生了什么;这不可能吗?

最佳答案

好吧,您的问题标题暗示涉及两个宏,但您的示例只显示了一个宏。所以我会继续猜测你有:

#define InitProperty(Name, Type) DefineMethods ( Name.Mode, Type, Name )
#define DefineMethods(Name, Type, Arg) DefineMethods##Name( Type, Arg )

现在如果你调用它

InitProperty(Lenght, caller)

你会得到(宏展开后)

DefineMethodsLenght.Mode(caller, Lenght)

这就是你所描述的。你说你想要

DefineMethods(Lenght.Mode, caller, Lenght)

它确实存在于宏扩展过程的中途,但在扩展 DefineMethods 宏之后,您将得到您所看到的。如果这不是您想要的,则问题出在 DefineMethods 宏而不是 InitProperty 宏中,但由于您没有在问题中显示它,我们无法真正判断发生了什么。

关于c++ - 宏到另一个宏,参数来自第一个宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4533429/

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