我正在搜索允许部分预处理C源文件的预处理器。我想要做的是跳过某些或所有#include并在命令行(或单独的文件)上定义一些宏,然后预处理器应该只处理我指定的内容而忽略其余的。
以下是我想要做的一个例子:
#define FOO
#ifdef FOO
/* FOO */
#endif
#ifdef BAR
/* BAR */
#endif
应该翻译成
/* FOO */
#ifdef BAR
/* BAR */
#endif
前段时间,在我之前的工作中,我需要一个类似的预处理器,我认为我在stackoverflow上找到了一个独立预处理器的链接,但是经过一个小时的搜索后,我放弃了。
答案 0 :(得分:2)
您可能正在寻找coan
,它能够在命令行提供一组定义(或取消定义)的情况下解释@Override
public void doFilter(ServletRequest req, ServletResponse resp) throws IOException, ServletException {
if (!(req instanceof HttpServletRequest) || !(resp instanceof HttpServletResponse)) {
// Unexpected
...
}
}
和#if
指令。
coan基于此相关问题中列出的#ifdef
实用程序:Partially processing a file with the preprocessor。
另请参阅Is there a C preprocessor that eliminates #ifdefs but also evaluates preprocessor macros?,其中包含示例调用。