我试图理解一个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/

10-11 23:04
查看更多