[小技巧]移除C/C++源码中无关的#ifdef
我们在阅读C/C++的开源代码时,常常会遇到这样的烦恼。很多开源项目是跨平台的,代码中使用了大量条件编译,充斥着各种#ifdef(#ifudef)等等。这些代码段对于源码阅读者来说,通常是一种干扰(源码阅读者通常是基于某一个固定平台的),这里介绍一种简单的方法,用来移除不必要的代码段。
首先下载一个源码处理的小工具:(其他Linux发行版请使用对应的包管理工具)
sudo apt-get install unifdef
拷贝一份源代码目录,并进入拷贝的目录中:
cp src/ src_bak/ -r && cd src_bak/
使用unifdef(假定我们要去掉所有基于WINDOWS和OSX定义的条件编译段):
find . -name "*.h" -exec unifdef -UWINDOWS -UOSX {} -o {} \;
find . -name "*.cpp" -exec unifdef -UWINDOWS -UOSX {} -o {} \;
注意命令中的{},这是find的exec选项的语法,代表find匹配到的文件本身。这里使用unifdef的-o将输出重定向到文件本身,也就是对源文件进行就地修改。(unifdef会将修改的内容输出到一个临时文件中,在完成时rename到源文件上)
转载于:https://www.cnblogs.com/promise6522/archive/2013/03/11/2954858.html
[小技巧]移除C/C++源码中无关的#ifdef相关推荐
- php源码编程,10个小技巧让你做好php源码编程
PHP是目前使用最广泛的网站编程语言,也是今后发展的一大趋势.有很多站长或多或少掌握一些php编程方法,下面小编就介绍十点实用的php编码技巧. 1.cho比print 快,并且使用echo的多重参数 ...
- Linux内核源码中使用宏定义的若干技巧
在C中,宏定义的概念虽然简单,但是真要用好却并不那么容易,下面从Linux源码中抽取一些宏定义的使用方法,希望能从中得到点启发: 1. 类型检查 比如module_init的宏定义: 点击(此处)折叠 ...
- 直播间小游戏,带货直播源码如何实现?
带货直播源码的更新优化速度非常快,而互动小游戏也是现在主流带货直播源码中的常见功能.当然单独拿出某一个小游戏,我们都可以将它看做一个个体,如果与视频直播结合,就可以为直播软件增光添彩了.那么,带货直播 ...
- 2020最新版影评小程序搭建教程(附源码获取渠道)
废话不多说现在进入搭建教程! 首先就是 环境要求: 这里我推荐使用宝塔安装LNMP服务器环境 使用宝塔的前提是你的服务器是刚购置的,或者重新安装的没有任何东西的 安装好后直接选择 linux ngin ...
- 【图像去噪】基于matlab GUI butterworth+中值+维纳+小波图像去噪【含Matlab源码 520期】
⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[图像去噪]基于matlab GUI butterworth+中值+维纳+小波图像去噪[含Matlab源码 520期] 获取代码方式2: ...
- Java社交商城APP+小程序多功能B2B2C商城源码
Java社交商城APP+小程序多功能B2B2C商城源码 功能介绍 1)用户可通过邀请好友.签到赚取糖果: 2)用户可以通过平台获取想要的商品,领券购买并获取分佣提成: 3) 用户可以通过淘宝链接搜索商 ...
- 微信小程序:强大工具箱组合源码
这是一个比较强大的一款工具箱 内有去水印功能(支持几十家平台去水印) 朋友圈功能|(发圈套图等) 头像,朋友圈封面,壁纸等 另外还有快递查询,手持弹幕等 另外还有一个强大的去水印历史记录 历史记录可以 ...
- JAVA课程设计(小游戏贪吃蛇)完整源码附素材(二)
目录 JAVA课程设计(小游戏贪吃蛇)完整源码附素材(一) JAVA课程设计(小游戏贪吃蛇)完整源码附素材(二) JAVA课程设计(小游戏贪吃蛇)完整源码附素材(三) 前言 1. 任务描述 1.1 ...
- 小程序一键生成系统网站源码
简介: 小程序一键生成系统网站源码,亲测没有问题,项目一本万利! 搭建部署方式: 测试环境:Linux+宝塔+php5.6+mysql5.5 第一步:修改配置信息 修改指引: 1:修改数据库配置连接路 ...
最新文章
- 告别人工标注!仅靠合成数据就能实现真实人脸分析!
- php 复选框 数组,php数组的复选框
- ElasticSearch Java Api(二) -检索索引库
- WPF定时刷新UI界面
- 使用MUI框架,模拟手机端的下拉刷新,上拉加载操作。
- c++的thread类(c++线程简单用法)
- Amber Group散户投资APP资管规模超10亿美元
- MyBatis缓存机制详解
- 科研ABC - 文献检索
- 通俗讲解光线追踪原理,一文理清各类光线追踪
- JavaScript获取当前时区 时间转换 (实用)
- Github-谷歌插件gitzip(加速器-不用再忍受几十kb/s的煎熬了)
- switch 求分段函数
- 存图片和视频到iPhone相册
- 雷军:我也想做高级工程师 !
- 【实用软件】流氓软件清理器-SoftCnKiller
- 三维电影特效动画制作软件——Houdini 17.5
- python,selenium爬取微博热搜存入Mysql
- Android开发高级进阶内涵段子APP项目实战视频教程
- 参考文献计算机程序标识代码,参考文献中计算机程序的标识代码为
热门文章
- linux 中samba账号登录密码,ubuntu下的Samba配置:使每个用户可以用自己的用户名和密码登录自己的home目录...
- mac启动本地redis_通过 Laravel Sail 构建基于 Docker 的本地开发环境
- 访问指定html页面,Spring boot的Controller类是如何指定HTML页面的
- void slove C语言什么意思,菜鸟求助-如何用指针法将一串字符按单词的倒序输出?如:i love yo...
- mysql和redis统计网站活跃度,最代码网站用户私信列表采用mysql union查询优化为Redis查询的经验和相关代码片段分享...
- python怎么重新开始_人人都是数据科学家从新开始用Python学习数据科学的完整教程P3...
- 比较好的电脑系统_win10电脑系统选择什么版本比较好
- 求均值方差_协方差,方差,标准差
- C++知识点51——虚函数与纯虚函数(下)
- C++知识点32——使用C++标准库(关联容器set和multiset的初始化,赋值,查找,添加,删除与迭代器失效)