您的位置:首页 > 编程语言 > C语言/C++

C++Primer::头文件设计基本原则 与 预处理器介绍

2016-05-11 11:49 375 查看

1.学会编写自己的头文件

有多个文件组成的程序需要一种方法连接名字的使用和声明,在C++中就是通过头文件实现的。C++程序使用头文件包含的不仅仅是类定义。
为了允许把程序写成独立的逻辑块,C++支持所谓的分别编译。正阳程序可以由多个文件组成。
头文件为相关声明提供了一个集中存放的位置。头文件一般包含类的定义、extern变量的声明和函数的声明。使用或定义这些实体的文件要包含适当的头文件。头文件的正确使用可以带来两个好处:保证所有文件使用给定实体的同一声明;当声明需要修改时,只有头文件需要更新。

2. 预处理器的简单介绍

要使用头文件,必须在源文件中#include该头文件。很有必要了解#include指示是怎样工作的。#include设施是C++预处理器的一部分。预处理器处理程序的源代码,在编译器之前运行。C++继承了C的非常精细的预处理器。
#include指示只接受一个参数:头文件名。预处理器用指定的头文件的内容代替每个#include。我们自己的头文件存储在文件中,系统的头文件可能特定与编译器的更高效的格式保存。无论头文件以什么样的格式保存,一般都含有支持分别编译所需的类定义及变量和函数的声明。
采用多文件设计程序,我们很难避免多重包含头文件的问题,C++给出了一个良好的解决方案。

3. 如何避免头文件的多重包含

在编写头文件之前,我们需要引入一些额外的预处理器设施。预处理器允许我们自定义变量。(预处理器变量的名字在程序中必须是为唯一的。任何与预处理器变量相匹配的名字的使用都关联到该处理器变量)。
为了避免名字冲突,预处理器变量通常全大写字母表示。
预处理器有两种状态:已定义或未定义。定义预处理器变量和检测其状态所用的预处理器指示不同。#define指示接受一个名字并定义改名字为预处理器变量。#ifndef指示检测指定的预处理器变量是否未定义。如果预处理器变量未定义,那么 跟在其后的的所有指示都被处理,直到出现#endif。那么,我们就可以使用这些设施来预防多次包含同一头文件:
#ifndef SALESITEM_H
#define SALESITEM_H
// defination of Sales_item class and related functions goes here
#endif

4.区分标准头文件和自己定义的头文件

#include 指示接受两种形式:
#include<standard_header>
#include "my_file.h"
j尖括号里面的头文件是标准头文件。编译器将会在预定义的位置集查找该头文件。引号内的头文件,并不是系统的头文件,而是用户自己编写的头文件。非系统头文件的查找通常开始于源文件所在的路径。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: