Chinaunix首页 | 论坛 | 博客
  • 博客访问: 253757
  • 博文数量: 60
  • 博客积分: 1222
  • 博客等级: 少尉
  • 技术积分: 585
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-16 17:28
个人简介

从学通信的博士到从事IT行业的工程师 从原华为项目经理,到现任职公司架构师

文章分类

全部博文(60)

文章存档

2013年(18)

2012年(42)

我的朋友

分类: C/C++

2012-12-23 21:22:33

最近的项目一直在讨论如何管理头文件,原项目使用Visual Studio开发,源文件中对头文件的引用比较乱,有很多类似于"../../include/header.h"的头文件引用。现在要移植到类UNIX平台,头文件的引用管理问题也逐渐显露出来。
IDE的使用一方面简化了我们的开发工作,另一方面也让我们丧失了对某些领域的控制,或者说让我们疏忽了对某些领域的控制感,不知不觉我们就按照IDE的默认方式做了,甚至转而适应IDE的默认方式。这就如同猎人转而耕作农田,农民转向城市打工,都逐渐丢失掉原应持有的生存本领。也许这就是社会和技术进步的负面影响吧!
看到问题之后,我们找一个参照物,看看到底怎么清晰地管理头文件(也许每个人都知道,但没有几个人这样做,或者没时间这样做)。
有一个开源项目叫做asterisk(很有名,google一下就看到了),它在项目中有一个include/文件夹,下面有一个asterisk.h文件和一个asterisk子文件夹,这个asterisk子文件夹包含了所有其他源文件需要引用的公共头文件。而模块内不想暴露在外的头文件则放置在和模块源文件相同的路径。因此源文件引用头文件的方式就是下面这个样了:
=======================================================================
/*公共头文件*/
#include "asterisk.h"

ASTERISK_FILE_VERSION(__FILE__, "$Revision: 366408 $")
/*系统头文件*/
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#ifdef HAVE_LINUX_COMPILER_H
#include 
#endif
#include 
/* Still use some IXJ specific stuff */
#include 
#include 

/*公共头文件*/
#include "asterisk/lock.h"
#include "asterisk/channel.h"
#include "asterisk/config.h"
#include "asterisk/module.h"
#include "asterisk/pbx.h"
#include "asterisk/utils.h"
#include "asterisk/callerid.h"
#include "asterisk/causes.h"
#include "asterisk/stringfields.h"
#include "asterisk/musiconhold.h"

/*模块内头文件*/
#include "chan_phone.h"
=======================================================================
例子就在这里,多余的话不说了。
阅读(2014) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

hanhuili2012-12-24 21:25:29

看了一下VirtualBox(C++实现)的代码,也是相同的思路