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============ ...
随机推荐
- Ubuntu 16.04 搭建KVM环境
在Ubuntu 16.04下搭建KVM环境过程记录. 1 查看CPU是否支持KVM egrep "(svm|vmx)" /proc/cpuinfo 有结果输出,如下图: 2 安 ...
- JavaScript高级 面向对象(13)--构造函数的执行过程
说明(2017-4-2 21:50:45) 一.构造函数是干什么用的: 1. 初始化数据的. 2. 在js给对象添加属性用的,初始化属性值用. 二.创建对象的过程: 1. 代码:var p = new ...
- [转]bootstrap table本地数据使用方法
原文地址:http://www.giserdqy.com/language/h5/bootstrap/1136 data对应columns进行组合 var columns = [ { field: ' ...
- Postgres客户端编码问题
数据库编程的编码问题数据库编程设计的编码问题包括三个方面: 数据库服务器编码: 数据库客户端编码: 本地环境编码.(1)数据库服务器字符编码:数据库服务器支持某种编码,是指数据库服务 ...
- yum使用过程中的常见错误
(1) 使用yum安装相关软件包时一直提示以下错误:repodata/repomd.xml: [Errno 4] IOError: <urlopen error (113>, Error: ...
- jQuery笔记二——基础/动画
1. jQuery的基础语法: $(selector).action() 2. 很多jQuery的语句放在ready里面 $(document).ready(function(){ // jQuery ...
- spring 加载jar包中的配置文件
package com.xxx.ssptsppt.dataexchange.utils; import com.xxx.maybee.engine.utils.FileUtil; import com ...
- 自定义垂直拖动的seekbar进度条
系统自定义的seekbar为横向拖动的样式,需要纵向的时则需要自己定义,网上很多说了重写系统SeekBar中onDraw()的方法,但是我使用的时候不知道为什么拖动条和点偏离了,不在一条直线上,好气. ...
- Rscripts的使用,以及如何为R脚本传参数
一.在windows下使用Rscript: 1.进入cmd.exe下,将当前工作目录转到Rscript.exe所在目录下面,然后调用Rscript **.R文件即可.但是所调用的.R文件必须是在R的 ...
- 自然语言交流系统 phxnet团队 创新实训 个人博客 (十四)
关于WikiExtractor的学习笔记: WikiExtractor是一个Python 脚本,专门用于提取和清洗Wikipedia的dump数据,支持Python 2.7 或者 Python 3.3 ...