c++ - 具有 3 个术语的可变参数宏

标签 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
};

最佳答案

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

LFE_API(Init) 扩展为 LFE_Init Init;

关于c++ - 具有 3 个术语的可变参数宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3516953/

相关文章:

java - 在 Java 中加密 (AES),在 C++ 中解密 (OpenSSL)

c++ - 如何用 C++ 读取 NetCDF "global attribute"

arrays - 如何将一组 Expr(表达式)传递给 Haxe 宏?

objective-c - 如何在 Objective-C 中抑制 "macro redefined"警告

c - 可变宏技巧

c++ - std::cout 输出直到程序结束才打印

带有函数访问的全局共享变量的 C++ volatile 关键字

macros - 导出Word审稿评论时,如何引用与评论相关的句子?

c++ - 复杂情况下如何进行宏替换?

c - 在另一个#define中使用#define的参数名称