从本机外部库中,我得到一个包含枚举声明的头文件:
#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文档使用相同的方法,因此宏的输出如下所示:
Val.A
/// aaa
enum class Val { /// aaa A, /// bbb B, /// ccc C, }
创建类似宏的
#define EXTRACT(p1,p2) /// p2 \ p1,
因为C++编译器的处理而不起作用 /// 作为注释,由于 \ 在队伍的尽头。
///
\
不使用codegen工具就可以实现这一点吗?谢谢!
Microsoft的预处理器不保留宏中的注释。所以从技术上讲,插入新行是不可能的。 See this 详细问题解答。
因此,首先不可能使用MS的预处理器生成代码。