VS2010 正则批量替换头文件路径
最近在项目实践中,需要统一对工程头文件进行重构,具体要求是,将之前 #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,以下介绍的方法,仅在2010上面测试验证过,不同版本的VS正则有可能有区别,在此仅供参考。
为了避免正则替换掉程序正文中可能出现的字符串,需要开头匹配#include,这是非常重要的,我就是因为之前没有这样做,采用 “../{.*}/{.*}”正则来替换,结果修改程序正文的字符串,后续的查找修正非常繁琐。

具体的替换方法,在上图中,已经写的很详细,可以参考
VS2010 正则批量替换头文件路径的更多相关文章
- VS2010正则批量替换set_和get_
批量替换set_: daohang.set_ChannelName(rowArray[0]["ChannelName"].ToString()); daohang.set_Chan ...
- 使用powershell批量添加Keil和IAR的头文件路径
在Keil和IAR的工程中,为了使文件结构清晰,通常会设置很多的子文件夹,然后将头文件和源文件放在不同的子文件夹中,这样就需要手动添加这些头文件夹的路径.当工程结构非常复杂时,文件夹的数量就非常多,特 ...
- PHP用正则批量替换Img中src内容,用正则表达式获取图片路径实现缩略图功能
PHP用正则批量替换Img中src内容,用正则表达式获取图片路径实现缩略图功能 网上很多正则表达式只能获取或者替换一个img的src内容,或者只能替换固定的字符串,要动态替换多个图片内容的试了几个小时 ...
- PHP用正则批量替换Img中src内容,用正则表达式获取图片路径实现缩略图功能
PHP用正则批量替换Img中src内容,用正则表达式获取图片路径实现缩略图功能 网上很多正则表达式只能获取或者替换一个img的src内容,或者只能替换固定的字符串,要动态替换多个图片内容的试了几个小时 ...
- Linux命令行批量替换多文件中的字符串【转】
Linux命令行批量替换多文件中的字符串[转自百度文库] 一种是Mahuinan法,一种是Sumly法,一种是30T法分别如下: 一.Mahuinan法: 用sed命令可以批量替换多个文件中的字符串. ...
- MinGW中的头文件路径级环境变量设置
整理自 MinGW中的头文件路径 C头文件目录%MINGW_PATH%/include下有头文件,里面有strcpy等c函数的声明. C++头文件目录%MINGW_PATH%/lib/gcc/mi ...
- CodeWarrior 10 添加/修改 头文件路径
当使用CodeWarrior 10时,默认使用大名鼎鼎的GCC编译器. 我们在构建工程的时候,往往按模块分类文件夹,那么就存在需要包含头文件路径的问题.那么如何加入头文件的路径呢?见下文. 1.打开工 ...
- gcc指定头文件路径及动态链接库路径
gcc指定头文件路径及动态链接库路径 本文详细介绍了linux 下gcc头文件指定方法,以及搜索路径顺序的问题.另外,还总结了,gcc动态链接的方法以及路径指定,同样也讨论了搜索路径的顺序问题.本 ...
- 如何指定GCC的默认头文件路径
如何指定GCC的默认头文件路径 网上偶搜得之,以之为宝:)原地址:http://blog.chinaunix.net/u/28781/showart.php?id=401631============ ...
随机推荐
- 2017 年 机器学习之数据挖据、数据分析,可视化,ML,DL,NLP等知识记录和总结
今天是2017年12月30日,2017年的年尾,2018年马上就要到了,回顾2017过的确实很快,不知不觉就到年末了,再次开篇对2016.2017年的学习数据挖掘,机器学习方面的知识做一个总结,对自己 ...
- Unity3D-RPG项目实战(4):角色性能測试
前言 用一个新的引擎.还是要沉下心来学习.记得2007年用Unreal Engine 3做项目的时候.就有过慘痛的教训:前面话了个把月的时间学习Unreal.认为摸门了.于是就着急忙慌的进入项目正式开 ...
- Java byte类型转换成int类型时需要 & 0XFF的原因
Java byte类型转换成int类型时需要 & 0XFF的原因 假设有byte b = -1; 那么b的二进制是:1111 1111. 如果将b直接转换为int类型,那么二进制是 1111 ...
- Android ——利用OnDraw实现自定义View(转)
自定义View的实现方式大概可以分为三种,自绘控件.组合控件.以及继承控件.本文将介绍自绘控件的用法.自绘控件的意思是,这个控件上的内容是用onDraw函数绘制出来的.关于onDraw函数的介绍可参看 ...
- IIS7上传文件大小設定
1.首先.修改Web.Config中的maxRequestLength.单位是KB:executionTimeout单位是秒.例:maxRequestLength=1024(1MB)execution ...
- 十大要避免的Ext JS开发方法
原文地址:http://www.sencha.com/blog/top-10-ext-js-development-practices-to-avoid/ 作者:Sean LanktreeSean i ...
- 【C】——const和volatile可以并用吗?
答案是肯定的,可以一起用. 因为很多人误解了const的真正含义,很多初学者认为const修饰的就是常量,而常量不会改变,而既然不会改变,那volatile就没有意义. 但是实际上这正是对const的 ...
- 微信小程序——计算2点之间的距离
关于计算2点之间的距离都依赖了腾讯地图,所以请先在腾讯地图官网申请key.具体流程看下图: 下面具体讲计算2点之间距离的方法. 方法一: 1.通过 wx.getLocation(Object obje ...
- Java零拷贝
1.摘要 零拷贝的“零”是指用户态和内核态间copy数据的次数为零. 传统的数据copy(文件到文件.client到server等)涉及到四次用户态内核态切换.四次copy.四次copy中,两次在用户 ...
- R语言入门 一些基本的操作
1 R的下载.安转 R有很多的版本,支持目前主流的操作系统MAC.Linux和WINDOWS系列.因为我个人是在WINDOWS下用R的,所以在这里将只介绍WINDOWS下R的下载&安装. 下载 ...