【发布时间】:2011-04-29 07:48:12
【问题描述】:
我正在尝试从 C 标头中删除宏,但在删除多行宏时遇到问题。比如
#define macro(char) \
//macro still continues \
//macro still continues \
这是删除单行宏的正则表达式,但我不太确定如何在正则表达式中包含 \n。
text=re.sub('#([\W\w\s\d])*?\n', '', text, re.S)
【问题讨论】:
-
您是否还尝试删除其他预处理器结构,例如条件编译(
#ifdef等)?您当前的正则表达式会这样做,但问题只提到宏。 -
是的,我想删除所有宏。这目前仅删除单行宏,例如 #include "library.h"。我只是不太确定如何将 \\n 放入正则表达式中,然后它应该适用于每个宏
-
吹毛求疵,但清晰对于获得好的答案很重要:我认为您的意思是要删除所有 预处理器指令。宏 (
#define ...) 是一种指令,源包含 (#include ...) 和条件包含 (#ifdef ... #endif) 也是如此。请参阅维基百科上的 C preprocessor 文章。 -
哦对不起,没仔细看。就条件包含而言,我只想删除 #ifdef 和 #endif 而不是之间的代码。