如何在 VSCode 的整个存储库中用 #pragma once 替换所有包含守卫?

问题描述 投票:0回答:1

在我们的项目中,我们使用包含守卫,例如:

..
#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
功能。

如何实现?
可能以某种方式将 include guard 与内容匹配,将内容存储在 include guard 中,为内容加上 pragma 前缀并用内容替换 include guard,对吗?
我正在努力存储(或不修改)include guard 中的内容。

regex visual-studio-code replace multiline
1个回答
0
投票

所以我自己让它工作(至少对于我们替换了 4687 个标头的项目):

  1. 搜索:
    ^#ifndef\s+[A-Z_].*\s*#define\s+[A-Z_].*((.*\n)+.*)#endif.*$

    替换:
    #pragma once$1
  2. Replace All
    .
© www.soinside.com 2019 - 2024. All rights reserved.