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

Tho*_*ter 7 c c++ parsing preprocessor

我的工作包含许多预处理许多C-的源文件#if,#elseif#else报表.

这些陈述经常检查a #define,例如

#if(Switch_TestMode == Switch_TestModeON)
/* code 1 */
#else
/*code 2 */
#endif
Run Code Online (Sandbox Code Playgroud)

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

#define用于此预处理程序#if语句的s 在额外文件中定义.

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

对于上面的例子,我想获得一个仅包含的新.c文件

/*code 2 */
Run Code Online (Sandbox Code Playgroud)

假定#defineSwitch_TestMode是不等于Switch_TestModeON.

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

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

谢谢你的提示!

问候

托马斯

Ira*_*ter 1

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

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