【问题标题】:Creating html doc in CLI C++ with macros使用宏在 CLI C++ 中创建 html doc
【发布时间】:2026-01-17 18:10:01
【问题描述】:

从一个本地的外部库中,我得到一个带有枚举声明的头文件:

#define LIST(declare) \
   declare(A, "aaa") \
   declare(B, "bbb") \
   declare(C, "ccc") \

使用它,我创建了一个 .NET 枚举:

#define EXTRACT(p1,p2)  p1,
enum class Val { LIST(EXTRACT) };

效果很好。结果是Val.A, ... 值。现在,我想使用相同的方法自动生成/// aaa html doc,这样宏的输出将如下所示:

enum class Val {
    /// aaa
    A,
    /// bbb
    B,
    /// ccc
    C,
}

创建一个类似

的宏
#define EXTRACT(p1,p2) /// p2 \
                           p1,

不起作用,因为 C++ 编译器将 /// 视为注释,由于行尾的 \ 而进入下一行。

是否有可能在不使用代码生成工具的情况下实现这一目标?谢谢!

【问题讨论】:

    标签: c++-cli preprocessor


    【解决方案1】:

    Microsoft 的预处理器不会在宏中保留 cmets。所以从技术上讲,插入换行符是不可能的。 See this问答了解详情。

    因此,一开始就无法使用 MS 的预处理器生成代码。

    【讨论】: