regex 如何在VSCode中用#pragma替换整个仓库中的所有include guards?

qf9go6mv  于 2023-04-22  发布在  Vscode
关注(0)|答案(1)|浏览(150)

在我们的项目中,我们使用include guards,例如:

..
#ifndef _SINGLETON_H_
#define _SINGLETON_H_
..
#endif  // #ifndef _SINGLETON_H_
..

最后一行可以没有注解等,所以文件匹配如下:
^.*#ifndef\s+[A-Z_]+\s+#define\s+[A-Z_]+(.*\n)*.*#endif.*$ .
我想将其替换为:

..
#pragma once
..
..

使用Replace All功能。
如何做到这一点?
可能以某种方式将包含保护与内容匹配,将内容存储在包含保护中,用pragma前缀内容并用内容替换包含保护,对吗?
我正在努力存储(或不修改)包含保护中的内容。

r7knjye2

r7knjye21#

所以我自己实现了它(至少在我们的项目中替换了4687个头):
1.搜索:^#ifndef\s+[A-Z_].*\s*#define\s+[A-Z_].*((.*\n)+.*)#endif.*$
替换:#pragma once$1
1.点击Replace All

相关问题