我正在处理许多包含许多预处理器#if
,#elseif
和#else
语句的C源代码文件。预处理器#if语句的工具/解析器?
该陈述通常检查#define
,例如,
#if(Switch_TestMode == Switch_TestModeON)
/* code 1 */
#else
/*code 2 */
#endif
通常这个预处理器语句位于c-if语句中,这使得人类的源代码几乎不可读。
用于此预处理程序#if
语句的#define
是在一个额外的文件中定义的。
我现在的想法是拥有一个工具来检查这个#define
d开关设置,然后只复制使用当前#define /开关设置应用的源代码行。
对于上面的例子,我想获得其中只包含
/*code 2 */
假定Switch_TestMode
的#define
一个新的.c文件不等于Switch_TestModeON
。
是否提供这项工作的工具(免费软件||低成本)? 或者我必须为此编写我自己的预处理器解析器吗?
(这是不可能的,我用它来完成这个工作的特殊参数运行编译器,因为我们的公司创造了C-源代码,另一家公司正在编制)。
感谢您的任何提示!
问候
托马斯
很少有需要考虑/探索的事情:如果您的客户报告编译错误行号,他们会更难映射回您的原始资源。预处理器通常会在其输出中放入一些标记,以便编译器可以提供有用的行号,但是我不知道这在编译器之间是如何标准化的,所以您可能无法为客户的编译器适当地标记输出。 – 2010-11-04 02:05:45