【问题标题】:Variadic Macro with 3 terms具有 3 个术语的可变参数宏
【发布时间】:2010-08-18 21:40:56
【问题描述】:

我正在尝试理解显式读取 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
};

【问题讨论】:

    标签: c++ macros c-preprocessor variadic


    【解决方案1】:

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

    LFE_API(Init) 扩展为 LFE_Init Init;

    【讨论】:

      【解决方案2】:
      LFE_Init Init;
      

      等等

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

      【讨论】:

      • 谢谢,之前没想到是类型和名字。
      猜你喜欢
      • 2011-04-04
      • 1970-01-01
      • 2011-04-03
      • 2011-07-14
      • 1970-01-01
      • 2013-05-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多