Variadic Macro有3个术语

时间:2010-08-18 21:40:56

标签: c++ macros c-preprocessor variadic

我正在尝试理解显式读取dll的C ++代码。 有没有人知道下面的#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
};

2 个答案:

答案 0 :(得分:1)

由于宏的第一部分(LFE _ ## name)只是连接两个部分,因此对LFE_API的调用是创建一个名为name的变量,其类型为LFE ## name,例如:

LFE_API(Init)扩展为LFE_Init Init;

答案 1 :(得分:1)

LFE_Init Init;

在代码上运行g ++ -E以查看生成的内容。结构元素需要类型和名称。