提问人:Paulo Neves 提问时间:10/8/2011 更新时间:6/19/2012 访问量:4900
C 预处理器宏中的正则表达式
Regular expressions in C preprocessor macro
答:
5赞
Gregory Pakosz
10/8/2011
#1
C 预处理器无法做到这一点。
您可能希望使用模板处理器(例如 Mustache,但还有许多其他处理器)在将模板传递给编译器之前生成所需的内容。
评论
0赞
Paulo Neves
10/8/2011
这确实是我从未听说过的事情,看起来它会有很大帮助。我将等待更多答案,看看是否有其他解决方案
1赞
RushPL
10/8/2011
#2
此外,如果你正在计划一个更大的项目,并且你知道这个功能是有益的,你可能想要编写自己的预处理器,你可以从某个构建系统自动运行。这种解决方案的好例子是moc,它为Qt框架的目的增强了C++。纯粹主义者当然可能不同意。
评论
0赞
Gregory Pakosz
10/8/2011
我不是纯粹主义者,我不同意。qmake 与 Qt 对 C++ 的预处理无关。这是moc!doc.qt.nokia.com/latest/moc.html
0赞
Paulo Neves
10/8/2011
虽然我不同意 QMAKE 在语言本身方面的不透明工作方式,但这本身就是一个项目,而且我不需要那么多的火力
0赞
RushPL
10/8/2011
当然,我在想moc..我的错!需要更多的睡眠。;-)
0赞
Foad S. Farimani
11/13/2019
与 Moc 的链接已断开
0赞
over_optimistic
11/11/2011
#3
有这个 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。
0赞
Wayne
6/19/2012
#4
你可能想看看 re2c.org。它是一个单独的 C 预处理器来生成 用于匹配正则表达式的 C 代码。我在寻找时发现了那个和你的问题 类似的东西。
评论