从本机外部库中,我得到一个包含枚举声明的头文件:
#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 ++编译器将///
视为注释,由于该行末尾的\
,它会转到下一行。
是否有可能在不使用codegen工具的情况下实现这一目标?谢谢!
答案 0 :(得分:1)
Microsoft的预处理器不会在宏中保留注释。因此,技术上插入换行是不可能的。 See this Q& A了解详情。
因此,首先使用MS的预处理器无法生成代码。