【发布时间】:2011-05-18 18:35:26
【问题描述】:
我在文件中有一堆 C 宏,例如 NEXT( pL ) 扩展为 ( ( pL ) -> next )
我想删除其中的大部分,因为它们是不必要的。
我想做的是获取宏中括号内的文本pL。我希望替换正则表达式使用该文本进行重写。例如,在 Perl 中,我可以执行/NEXT\(\s*(.+)\s*) 之类的操作(可能有点不正确),然后输出$1->next 之类的内容,这应该会变成一行
if ( NEXT( pL ) != NULL ) {
进入
if ( pL->next != NULL ) {
在 Emacs 中,我想逐个文件地在 emacs 替换正则表达式中使用匹配组。我不完全确定如何在 Emacs 中执行此操作。
【问题讨论】:
-
M-x c-macro-expansion或M-x c-macro-expand可以使用。但是你所要求的看起来需要一个围绕M-x c-macro-expansion的新函数来处理整个文件或缓冲区。 -
c-macro-expand 不知道宏吗?它们位于单独的文件/缓冲区中。