Chinaunix首页 | 论坛 | 博客
  • 博客访问: 880533
  • 博文数量: 61
  • 博客积分: 2315
  • 博客等级: 大尉
  • 技术积分: 2560
  • 用 户 组: 普通用户
  • 注册时间: 2011-11-22 18:00
文章分类

全部博文(61)

文章存档

2015年(3)

2014年(3)

2013年(9)

2012年(23)

2011年(23)

分类: C/C++

2013-07-16 11:21:51

假设存在下图所示的项目目录结构。

如果存在如下包含头文件的代码,则大多的项目中需要通过“-I foo”和“-I bar”指明两个搜索头文件的目录。

点击(此处)折叠或打开

  1. foo.c
  2. #include "bar.h"

点击(此处)折叠或打开

  1. bar.c
  2. #include "foo.h"


然而,当项目规模很大存在很多的目录时,这种方式将显著地降低项目的编译速度。因为“-I”选项使用得越多,意味着编译每一个C文件时所需进行头文件搜索的目录也越多。


为了避免这一问题,我们可以将代码改为:

点击(此处)折叠或打开

  1. foo.c
  2. #include "bar/bar.h"
点击(此处)折叠或打开
  1. bar.c
  2. #include "foo/foo.h"


如此一来,整个项目只需一个“-I src”选项就行了。


促使我意识到这一问题,是因为前段时间看到Blink开源项目的一封邮件,其中谈到采用上面的第二种方法后,在Windows上编译Blink的速度提高了40%。


本文出自李云的博客,请务必保留此出处:http://blog.chinaunix.net/uid-26470037-id-3805141.html
阅读(3523) | 评论(1) | 转发(1) |
给主人留下些什么吧!~~

UnixStudier2013-07-16 14:44:18

#include "foo/foo.h"
这种做法导致头文件依赖具体的目录。不太好。
头文件影响编译速度,可以使用“预编译”头文件技术。