我试图理解一个C ++代码,该代码明确读取dll。
有谁知道下面的#define LFE_API(name) LFE_##name name
行实际上是如何工作的?
我理解#define LFE_API(name) LFE_##name
,但是对最后的“名称”感到困惑。
struct Interface
{
# ifdef LFE_API
# error You can't define LFE_API before.
# else
# define LFE_API(name) LFE_##name name
LFE_API(Init);
LFE_API(Close);
LFE_API(GetProperty);
# undef LFE_API
# endif
};
最佳答案
由于宏的第一部分(LFE _ ## name)仅将这两个部分连接在一起,因此对LFE_API的调用将创建一个名为name的变量,其类型为LFE ## name,例如:
LFE_API(Init)扩展为LFE_Init Init;
关于c++ - 具有3个术语的可变参数宏,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3516953/