我想预处理 C++ 头文件,将所有宏逐字保留在输出文本中。
为此,我需要一个类似 C 预处理器的程序来执行这些任务:
- 将指令中的宏存储在内存中
#define
; - 递归地遵循
#include
指令; - 评估条件
#if
和#ifdef
指令; - 抑制
#if
..#else
..#endif
块的非活动部分中的代码; - (可选)删除
/* .. */
和//
评论; - 删除所有剩余的指令行。
但是不能在输出中替换宏。或者,预处理器可以将不应替换的宏名称列表作为参数。
这听起来可能很奇怪,但我有一个很好的理由。我有一系列能够分析预处理 C++ 类头的 Perl 脚本。我使用一些宏来告诉他们例如要导出哪些方法。
我还没有找到能够执行我需要的预处理程序,所以我编写了一个 Perl 脚本。后者实际上有效,但速度慢且不标准。我正在寻找更好的选择。