预处理器#if语句的工具/解析器?
我正在处理许多C源代码文件,其中包含许多预处理器#if
, #if
#elseif
和#else
语句。
这些语句通常会检查#define
,例如
#if(Switch_TestMode == Switch_TestModeON) /* code 1 */ #else /*code 2 */ #endif
这些预处理程序语句通常位于c-if语句中,这使得源代码几乎不可读。
用于此预处理程序#if
语句的#define
在额外文件中定义。
我现在的想法是有一个工具来检查这个#define
d开关设置,然后只复制使用当前#define
/ switch设置应用的源代码行。
对于上面的示例,我想获得一个仅包含的新.c文件
/*code 2 */
假设Switch_TestMode
的#define
不等于Switch_TestModeON
。
是否有工具(免费软件||低成本)可以完成这项工作? 或者我是否必须为此编写自己的预处理器解析器?
(我不可能使用执行此工作的特殊参数来运行编译器,因为我们公司正在创建C源代码,另一家公司正在编译。)
谢谢你的提示!
问候
托马斯
unifdef可从http://dotat.at/prog/unifdef/获得 。
试试Sunifdef
编辑:现在已成为Coan
您可以使用命令行选项-E运行GNU编译器来执行预处理。
你可以使用unifdef。