VS2010 正则批量替换头文件路径

时间:2022-09-08 13:17:05

    最近在项目实践中,需要统一对工程头文件进行重构,具体要求是,将之前 #include “../../abc/def.h” 类似的头文件引用路径 替换为#include “def.h” 之类的。由于工程文件很多,如果全部手动来一个一个的替换,显然是不现实的,这就需要利用正则表达式来批量替换头文件路径。

任务背景

        针对项目中 多种多样的头文件包含路径 ,有 ./abc.h ,有 .\abc.h,有 ..\abc.h,有..\..\abc.h之类的多种多样的头文件包含风格,需要统一风格,更改为 #include “abc.h”这种方式。

解决思路

        整体采用正则全局替换的方法,针对一些在不同物理目录下有相同文件名包含的情况,要特别处理。例如,在 Def目录和Comm目录下,都有 abc.h头文件,在这种情况下,如果对应头文件包含路径为 #include “Def/abc.h”,正则替换会将其改为 #include “abc.h”,那么,有可能编译器会去Comm目录下面去找abc.h,而不是原来的Def目录,这就不是我们想要的结果。发生这种情况的原因是,设置VS头文件搜索路径时,有先后顺序的,这个先后顺序由自用户自定义顺序来决定,具体设置位置如下图:

VS2010 正则批量替换头文件路径

  

      下面来介绍,针对一般情况下的头文件路径替换,我的开发环境是VS2010,以下介绍的方法,仅在2010上面测试验证过,不同版本的VS正则有可能有区别,在此仅供参考。

     为了避免正则替换掉程序正文中可能出现的字符串,需要开头匹配#include,这是非常重要的,我就是因为之前没有这样做,采用 “../{.*}/{.*}”正则来替换,结果修改程序正文的字符串,后续的查找修正非常繁琐。

     VS2010 正则批量替换头文件路径

    具体的替换方法,在上图中,已经写的很详细,可以参考

    Visual Studio 2010中用正则表达式查找

VS2010 正则批量替换头文件路径的更多相关文章

  1. VS2010正则批量替换set_和get_

    批量替换set_: daohang.set_ChannelName(rowArray[0]["ChannelName"].ToString()); daohang.set_Chan ...

  2. 使用powershell批量添加Keil和IAR的头文件路径

    在Keil和IAR的工程中,为了使文件结构清晰,通常会设置很多的子文件夹,然后将头文件和源文件放在不同的子文件夹中,这样就需要手动添加这些头文件夹的路径.当工程结构非常复杂时,文件夹的数量就非常多,特 ...

  3. PHP用正则批量替换Img中src内容,用正则表达式获取图片路径实现缩略图功能

    PHP用正则批量替换Img中src内容,用正则表达式获取图片路径实现缩略图功能 网上很多正则表达式只能获取或者替换一个img的src内容,或者只能替换固定的字符串,要动态替换多个图片内容的试了几个小时 ...

  4. PHP用正则批量替换Img中src内容,用正则表达式获取图片路径实现缩略图功能

    PHP用正则批量替换Img中src内容,用正则表达式获取图片路径实现缩略图功能 网上很多正则表达式只能获取或者替换一个img的src内容,或者只能替换固定的字符串,要动态替换多个图片内容的试了几个小时 ...

  5. Linux命令行批量替换多文件中的字符串【转】

    Linux命令行批量替换多文件中的字符串[转自百度文库] 一种是Mahuinan法,一种是Sumly法,一种是30T法分别如下: 一.Mahuinan法: 用sed命令可以批量替换多个文件中的字符串. ...

  6. MinGW中的头文件路径级环境变量设置

    整理自 MinGW中的头文件路径   C头文件目录%MINGW_PATH%/include下有头文件,里面有strcpy等c函数的声明. C++头文件目录%MINGW_PATH%/lib/gcc/mi ...

  7. CodeWarrior 10 添加/修改 头文件路径

    当使用CodeWarrior 10时,默认使用大名鼎鼎的GCC编译器. 我们在构建工程的时候,往往按模块分类文件夹,那么就存在需要包含头文件路径的问题.那么如何加入头文件的路径呢?见下文. 1.打开工 ...

  8. gcc指定头文件路径及动态链接库路径

    gcc指定头文件路径及动态链接库路径   本文详细介绍了linux 下gcc头文件指定方法,以及搜索路径顺序的问题.另外,还总结了,gcc动态链接的方法以及路径指定,同样也讨论了搜索路径的顺序问题.本 ...

  9. 如何指定GCC的默认头文件路径

    如何指定GCC的默认头文件路径 网上偶搜得之,以之为宝:)原地址:http://blog.chinaunix.net/u/28781/showart.php?id=401631============ ...

随机推荐

  1. iOS下控件坐标的转换方法

    转换方法如下: - (CGPoint)convertPoint:(CGPoint)point fromView:(UIView *)view - (CGPoint)convertPoint:(CGPo ...

  2. LXC docker

    docker的原理和特点可以参照百度百科 http://baike.baidu.com/view/11854949.htm 昨天听到光照说docker技术实现, 既然可以轻量虚拟,是否可以多个虚拟出分 ...

  3. Google 推出的 Java 编码规范(转)

    原文地址:http://www.dahuatu.com/1225/988516.html 原文地址:http://www.dahuatu.com/1225/988516.html 原文地址:http: ...

  4. Ajax方法执行跳转或者加载操作系统报出这样错误Sys.WebForms.PageRequestManagerParserErrorException:如何让解决

    当你在代码中使用Response.Redirect();  或者Response.Write();难免会遇到Sys.WebForms.PageRequestManagerParserErrorExce ...

  5. 爬虫-html

    Uri myUri =new Uri(@sURL); WebRequest wrq = WebRequest.Create(myUri); WebResponse wrs = wrq.GetRespo ...

  6. cadence16.6 中orcad导出网表时ERROR (ORCAP-5004)

    ORCAD网表输出时 ERROR (ORCAP-5004):Error  initializing COM  property   pages 之前遇到过这个问题,解决后忘了记录下来了.依稀记得问题答 ...

  7. Thinkphp框架----微信公众测试号开发

    最开始的一个步骤.注册一个微信公众测试号.URL:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login; 接口配置的信息,对新手 ...

  8. Android模拟器avd的创建、使用和调试相关命令

    1.创建AVD命令:android-sdk-windows\tools目录下面有android命令  android list 列出当前系统中已安装的Android版本以及已安装的AVD(Androi ...

  9. 《C#并行编程高级教程》第6章 PLINQ:声明式数据并行 笔记

    PLINQ这个话题好多书都写到过,这本也没有什么特别好的地方. 几个有用和有趣的点记录一下.   顺序的不确定性 用PLINQ就一定要记住并行后会导致顺序不确定的问题.解决方案就是AsOrdered或 ...

  10. Netflix开源类库archaius(一)概述

    archaius是什么,能做什么? archaius是Netflix公司开源项目之一,基于java的配置管理类库,主要用于多配置存储的动态获取.主要功能是对apache common configur ...