gpt4 book ai didi

c++ - C中的原始#define理解

转载 作者:太空狗 更新时间:2023-10-29 23:42:00 26 4
gpt4 key购买 nike

我有一个用 C 语言定义的宏,如下所示:

  #define SOME_FIELD(_A_,_B_,_C_) \
MyObj[ ## _A_ ## ].somePTR = \
(DWORD_PTR) (buff_ ## _C_ ## _C_ ## _ ## _B_ ## );

据我所知,对于索引 A,我们正在为“somePTR”获取一些值。我的问题是,什么是 ## <name> ## somePTR 的值是如何计算的?

我对这样的宏不熟悉,所以描述性的解释会很有帮助。

最佳答案

那叫token concatenation .它允许您将参数粘合在一起。

对于您的示例,SOME_FIELD(Param1,Param2,Param3); 展开如下:

MyObj[Param1].somePTR = (DWORD_PTR) (buff_Param3Param3_Param2);

通过使用编译器的预处理器,您可以很容易地自己尝试一下。您通常不需要费心编写成熟的 C 程序——预处理器通常可以自行调用。

关于c++ - C中的原始#define理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6570286/

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