您的位置:首页 > 其它

第一部分 基本语言 第二章 变量和基本类型(2.9编写自己的头文件)(预处理器)

2013-03-25 21:22 393 查看
2.9头文件

头文件为声明提供了一个集中存放的位置,正确使用头文件带来两个好处:

1、保证所有文件使用给定实体的同一声明。

2、当声明需要修改时只用更新头文件。

一、 头文件用于声明而非定义,定义只能出现一次,而声明可以出现多次。有三个例外:

1、头文件可以定义类。

2、可以定义值在编译时就已经知道的const对象。

3、inline内联函数。

二、 定义在头文件中的const对象,当const变量用常量初始化时,const变量就是一个常量表达式,const对象要成为常量表达式,初始化就必须为编译器可见。

为了让多个文件使用相同的常量值,const对象就必须为多文件可见。这样const对象就放到了头文件中。

但是,每个变量只能定义一次,定义分配存储空间,每次对改变量的引用都关联到同一存储空间。因为const对象默认为文件局部变量,所以合法。常量是全局可见性的,所以要在头文件,但是const对象是文件局部变量,只存在于头文件中,别的文件不能访问,所以合法。

反之,const应和其他变量一样,在头文件声明,别的文件定义。

习题解答:

1、判断下列语句那些是声明,哪些是定义,请解释原因。

extern int ix=1024;
int iy;

extern int iz;

extern const
int &ri;
答:第一第二是定义,第三第四声明。
2、下列声明和定义那些应该放在头文件中?那些应该放在源文件中?解释原因。

int var;

const double pi=3.14;
externint total=225;
constdouble sq2=squt(2.0);

答:第一第三第四应放在源文件中,第二应放在头文件中。

2.9.2预处理器

include是C++预处理器的一部分,预处理器处理程序源代码在编译器之前运行。include只接受一个参数:头文件名。预处理器用指定头文件的内容替代#include部分。

一、头文件经常需要其他头文件:

头文件在定义的过程中经常要用到其他的头文件,比如各种类。因此就有可能出现同一个头文件被包含多次的情况。所以我们必须保证同一头文件背包含多次而不会引起重复定义。这样我们就要使用预处理器定义头文件保护符。头文件保护符用于避免在已经见到头文件的情况下再次处理头文件。

二、避免多重包含:

预处理器变量的名字在程序中必须是唯一的,因此预处理器变量名经常使用全大写,两个预处理器:

1、#define
接受一个名字,并将定义该名字为预处理器变量。

2、#ifndef
检测指定预处理器变量是否定义。如未定义,则在其后的所有指示都被处理。直至出现#endif。

#ifndef C___primer___Header_h

#define C___primer___Header_h

int b()
{
int q=2,w=3;
return q+w;
}
int a=b();
int q=3;

//int g=a;

//const int b();

extern const
int &g;

const int s=5;

#endif

#ifndnf先测试预处理器变量是否被定义,如未定义,定义该变量,并处理接下来的指示。直至#endif。当下一次包含该头文件时,先执行#ifndef,如果定义了,就忽略剩余部分。

二、使用自定义头文件:

文件名在<>中,认为该头文件为标准头文件,文件名在""中,认为是非系统文件。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐