预处理器#if语句的工具/解析器?

时间:2010-11-03 23:01:51

标签: c++ c parsing preprocessor

我正在处理许多包含许多预处理器#if#elseif#else语句的C源代码文件。

此语句通常会检查#define,例如

#if(Switch_TestMode == Switch_TestModeON)
/* code 1 */
#else
/*code 2 */
#endif

这些预处理程序语句通常位于c-if语句中,这使得源代码对于人类来说几乎不可读。

用于此预处理器#define语句的#if在一个额外文件中定义。

我现在的想法是有一个工具可以检查这个#define d开关设置,然后只复制使用当前#define / switch设置应用的源代码行。

对于上面的示例,我想获得一个仅包含

的新.c文件
/*code 2 */

假设#define的{​​{1}}不等于Switch_TestMode

是否有工具(免费软件||低成本)可以完成这项工作? 或者我是否必须为此编写自己的预处理器解析器?

(我不可能使用执行此工作的特殊参数来运行编译器,因为我们公司正在创建另一家公司正在编译的C源代码。)

感谢任何提示!

此致

托马斯

4 个答案:

答案 0 :(得分:3)

unifdef可从http://dotat.at/prog/unifdef/获得。

答案 1 :(得分:2)

尝试Sunifdef

编辑:现在已成为Coan

答案 2 :(得分:1)

您可以使用命令行选项-E运行GNU编译器来执行预处理。

http://gcc.gnu.org/onlinedocs/gcc/Preprocessor-Options.html

答案 3 :(得分:1)

您可以使用unifdef。