l 【规则 1-2-1 】 为了防止头文件被重复引用,应当用 ifndef/define/endif 结构产生预处理块。
l 【规则 1-2-2 】 用 #include < filename.h> 格式来引用标准库的头文件(编译器将从标准库目录开始搜索)。
l 【规则 1-2-3 】 用 #include “filename.h” 格式来引用非标准库的头文件(编译器将从用户的工作目录开始搜索)。
2 【建议 1-2-1 】 头文件中只存放“声明”而不存放“定义”
在 C 语法中,类的成员函数可以在声明的同时被定义,并且自动成为内联函数。这虽然会带来书写上的方便,但却造成了风格不一致,弊大于利。建议将成员函数的定义与声明分开,不论该函数体有多么小。 2 【建议 1-2-2 】 不提倡使用全局变量,尽量不要在头文件中出现象 extern int value 这类声明。
// 版权和版本声明见示例 1-1 ,此处省略。
#ifndef GRAPHICS_H // 防止 graphics.h 被重复引用
#define GRAPHICS_H
#include // 引用标准库的头文件
…
#include “myheader.h” // 引用非标准库的头文件
…
void Function1(…). // 全局函数声明
…
class Box // 类结构声明
{
…
}.
#endif
示例 1-2 C /C头文件的结构
1.3 定义文件的结构 定义文件有三部分内容:
(1) 定义文件开头处的版权和版本声明(参见示例 1-1 )。
(2) 对一些头文件的引用。
(3) 程序的实现体(包括数据和代码)。
假设定义文件的名称为 graphics.cpp, 定义 文件的结构参 见示例 1-3 。
// 版权和版本声明见示例 1-1 ,此处省略。
#include “graphics.h” // 引用头文件
…
// 全局函数的实现体
void Function1(…)
{
…
}
// 类成员函数的实现体
void Box::Draw(…)
{
…
}
示例 1-3 C /C定义文件的结构
1.4 头文件的作用 早期的编程语言如 Basic 、 Fortran 没有头文件的概念, C /C 语言的初学者虽然会用使用头文件,但常常不明其理。这里对头文件的作用略作解释: