我有一个带有一堆预处理程序指令的C(头)文件-#define
,#ifdef
,#if
,甚至还有#pragma
。
现在,我要对该文件进行部分预处理,以便仅应用一种预处理器指令:#if
,其条件涉及特定变量(称为MY_VAR
);当然还有相应的#else
和#endif
。您可以假定如果在条件中使用MY_VAR
,则在该条件中不使用其他预处理程序定义;并且条件的格式为MY_VAR [op] [value]
,其中OP是比较操作,而VALUE是文字数字。
换句话说-我想保留文件中与MY_VAR
的某个值相关的部分-包括其中的所有预处理器定义,保持不变,并且不扩展。
我想可以通过编写一个涉及的awk / perl脚本并跟踪预处理程序指令的“嵌套”来实现。但是-有没有更简单或更直接的东西?
注意:如果有帮助,您甚至可以使用这些#if
伪指令对行上的空格进行假设,或者用文件的特殊注释或文件作者的其他类似“辅助”标记它们。