C预处理器宏中的正则表达式

时间:2011-10-08 14:35:58

标签: c regex macros

我想知道编译器(GCC)预处理器中是否存在任何类型的正则表达式扩展。基本上更灵活的代码生成宏。

如果没有办法,你怎么建议我完成相同的结果

4 个答案:

答案 0 :(得分:5)

C预处理器不能这样做。

您可能希望使用模板处理器(例如Mustache,但还有许多其他处理器)在将其传递给编译器之前生成所需的内容。

答案 1 :(得分:1)

此外,如果您计划更大的项目,并且您知道此功能将是有益的,您可能需要编写自己的预处理器,您可以从某个构建系统自动运行。这种解决方案的好例子是moc,它为Qt框架增强了C ++。纯粹主义者当然可能不同意。

答案 2 :(得分:0)

https://github.com/graph/qc qc = Quick C它允许你在以qc.h结尾的源代码文件中执行此操作

$replace asdf_(\d+) => asdf_ :) $1 blabla

// and now in your code anything that matches the above regular expression
asdf_123
// will become asdf_ :) 123 blabla

它将输出.cpp& a。那是预处理的。它的目的是为了避免维护头文件。还有一些其他的东西没有使它向后兼容c ++,但是它输出了c ++代码,所以你可以在一天结束时做你想要的所有c ++事情。

编辑:我做到了并且对qc有偏见。

答案 3 :(得分:0)

您可能需要查看re2c.org。它是一个单独的C预处理器来生成 用于匹配正则表达式的C代码。我在寻找时发现了这个和你的问题 类似的东西。