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