在我们的项目中,我们使用包含守卫,例如:
..
#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 中的内容。
所以我自己让它工作(至少对于我们替换了 4687 个标头的项目):
^#ifndef\s+[A-Z_].*\s*#define\s+[A-Z_].*((.*\n)+.*)#endif.*$
#pragma once$1
Replace All
.