0

我试图理解显式读取 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
};
4

2 回答 2

1

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

LFE_API(Init) 扩展为 LFE_Init Init;

于 2010-08-18T21:47:13.873 回答
1
LFE_Init Init;

等等

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

于 2010-08-18T21:49:49.187 回答