百度空间 | 百度首页 
               
 
查看文章
 
头文件重复包含
2007年12月29日 星期六 11:30
#include文件的一个不利之处在于一个头文件可能会被多次包含,为了说明这种错误,考虑下面的代码:
#include "x.h"
#include "x.h"

显然,这里文件x.h被包含了两次,没有人会故意编写这样的代码。但是下面的代码:
#include "a.h"
#include "b.h"

看上去没什么问题。如果a.h和b.h都包含了一个头文件x.h。那么x.h在此也同样被包含了两次,只不过它的形式不是那么明显而已。

多重包含在绝大多数情况下出现在大型程序中,它往往需要使用很多头文件,因此要发现重复包含并不容易。要解决这个问题,我们可以使用条件编译。如果所有的头文件都像下面这样编写:
#ifndef _HEADERNAME_H
#define _HEADERNAME_H

...

#endif

那么多重包含的危险就被消除了。当头文件第一次被包含时,它被正常处理,符号_HEADERNAME_H被定义为1。如果头文件被再次包含,通过条件编译,它的内容被忽略。符号_HEADERNAME_H按照被包含头文件的文件名进行取名,以避免由于其他头文件使用相同的符号而引起的冲突。

但是,你必须记住预处理器仍将整个头文件读入,即使这个头文件所有内容将被忽略。由于这种处理将托慢编译速度,所以如果可能,应该避免出现多重包含。

类别:C And Clib | 添加到搜藏 | 浏览() | 评论 (6)
 
最近读者:
 
网友评论:
1
2007年12月29日 星期六 11:39 | 回复
重复包含可能导致嵌套包含,嵌套包含层次过深会导致编译出错。 标准要求编译器必须支持至少8层的头文件嵌套,事实上,我们没有任何理由让#include指令的嵌套深度超过一层或两层。
 
2
2007年12月29日 星期六 22:56 | 回复
学到东西了
 
3
2007年12月31日 星期一 16:46 | 回复
祝你元旦快乐!千心源博客等你回访! 幸福在你身边,微笑在你心间,欢乐随你每天, 祝福你心想事成、万事如意、健康幸福快乐每一天! 千心源:全中文生活百科
 
4
2008年01月02日 星期三 09:23 | 回复
在西方,人们赚钱是为了花掉它,在中国,人们赚钱是为了赚更多的钱,他们的乐趣首先来自于数钱,而不是花钱。
 
6
2008年05月13日 星期二 20:52 | 回复
xiexie
 
7
2009年02月03日 星期二 18:35 | 回复
回复zengzhaonong:你现在终于知道为什么是西方先出现金融危机了把
 
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码: 请点击后输入四位验证码,字母不区分大小写
      

     

©2009 Baidu