我想知道编译器(GCC)预处理器中是否有任何正则表达式扩展。基本上是更灵活的代码生成宏。
如果没有这种方法,你建议我如何实现相同的结果。
如果没有这种方法,你建议我如何实现相同的结果。
C预处理器无法做到这一点。
您可能需要使用模板处理器(例如Mustache,但还有许多其他选择),在传递给编译器之前生成所需的内容。
有一个 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 和 .h 文件。它的设计是为了避免维护头文件的需要。还有一些其他的东西不兼容 C++,但它输出的是 C++ 代码,所以你可以在最后做你想做的所有 C++ 的事情。
编辑:我制作了它,并且有一个对 qc 的偏好。
您可能想要查看re2c.org。它是一种单独的C预处理器,用于生成匹配正则表达式的C代码。当我寻找类似内容时,我发现了这个网站和您的问题。