Chinaunix首页 | 论坛 | 博客
  • 博客访问: 545426
  • 博文数量: 101
  • 博客积分: 1889
  • 博客等级: 上尉
  • 技术积分: 906
  • 用 户 组: 普通用户
  • 注册时间: 2009-05-14 16:22
文章分类

全部博文(101)

文章存档

2012年(11)

2011年(19)

2010年(59)

2009年(12)

我的朋友

分类: C/C++

2010-05-24 11:56:16

1、为什么会出现多次包含同一个头文件呢?
 
    最常见的原因是许多包含文件自身包含了其他文件,因此可能显式地包含其他文件已经包含的文件。
 
2、为什么这会成为问题?
 
    因为头文件中的某些语句在一个文件中只能出现一次,比如结构类型的声明。标准C头文件使用#ifndef技术来避免多次包含。示例如下:
 

/* things.h */
#ifndef THINGS_H_
        #define THINGS_H_
        ...
#endif

注:这里注意到缩排问题。旧的实现可能不允许使用缩排格式的#define指令。现在的Gcc支持#define缩排,这样在结构上会更加清晰一些。在看.H文件时,还是会看到很多#define没有缩排的。就个人风格而言,我使用缩排格式。

3、如何保证使用的标识符在其他地方没有使用过?

    通常编译器提供商采用如下方法:用文件名作为标识符,并在文件名中使用大写字母。用下划线代替文件名中的句点符号,用下划线(可能两条下划线)作前缀和后缀。

    所以,为了避免跟编译器提供的头文件相冲突,采取的方法是把编译器标识符去掉前缀,也就是前缀不用下划线,其他按照编译器的方法。上面的示例就是采用的这种方法。

阅读(2401) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~