第1章 文件结构
每个C /C按次伟年夜分为两个文件。一个文件用于保管按次的声明(declaration),称为头文件。另一个文件用于保管按次的完成(implementation),称为界说(definition)文件。
C /C按次的头文件以“.h”为后缀,C按次的界说文件以“.c”为后缀,C 按次的界说文件伟年夜以“.cpp”为后缀(也有一些体系以“.cc”或“.cxx”为后缀)。
1.1 版权和版本的声明
版权和版本的声明位于头文件和界说文件的收尾(参见教例1-1),重要内容有:
(1)版权信息。
(2)文件称呼,标识符,摘要。
(3)今后版本号,作者/修正者,完成日期。
(4)版本汗青信息。
/*
* Copyright (c) 2001,上海贝尔有限公司网络使用奇观部
* All rights reserved.
*
* 文件称呼:filename.h
* 文件标识:见设置装备放置办理设计书
* 摘 要:简明描画本文件的内容
*
* 今后版本:1.1
* 作 者:输出作者(或修正者)名字
* 完成日期:2001年7月20日
*
* 取代版本:1.0
* 原作者 :输出原作者(或修正者)名字
* 完成日期:2001年5月10日
*/
示例1-1 版权和版本的声明
1.2 头文件的结构
头文件由三部分外容构成:
(1)头文件收尾处的版权和版本声明(参见教例1-1)。
(2)预处置惩罚块。
(3)函数和类结构声明等。
假定头文件称呼为 graphics.h,头文件的结构参见教例1-2。
l 【端方1-2-1】为了防备头文件被重复援用,该当用ifndef/define/endif结构发作预处置惩罚块。
l 【端方1-2-2】用 #include <filename.h> 把戏来援用标准库的头文件(编译器将从标准库目录初阶搜索)。
l 【端方1-2-3】用 #include “filename.h” 把戏来援用非标准库的头文件(编译器将从用户的任务目录初阶搜索)。
² 【提倡1-2-1】头文件中只存放“声明”而不存放“界说”
在C 语法中,类的成员函数可以在声明的同时被界说,并且主动成为内联函数。这固然会带来书写上的等闲,但却形成了风格不不同,弊年夜于利。提倡将成员函数的界说与声明分隔隔离分手,非论该函数体有多么小。
² 【提倡1-2-2】不倡议运用全局变量,尽量不要在头文件中泛起象extern int value 这类声明。
// 版权和版本声明见教例1-1,此处省略。
#ifndef GRAPHICS_H // 防备graphics.h被重复援用
#define GRAPHICS_H
#include <math.h> // 援用标准库的头文件
…
#include “myheader.h” // 援用非标准库的头文件
…
void Function1(…); // 全局函数声明
…
> // 类结构声明
{
…
};
#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语言的初学者固然会用运用头文件,但经常不明其理。这里仇家文件的浸染略作解释:
(1)经由甚文件来挪用库功用。在许多场所,源代码便利(或禁绝)向用户颁布揭橥,只需向用户供应头文件和二进制的库即可。用户只需求依照头文件中的接口声明来挪用库功用,而不用关切接口怎样完成的。编译器会从库中提取响应的代码。
(2)头文件能加强');圭臬安详反省。假定某个接口被完成或被运用时,其体式把戏与头文件中的声明不不同,编译器就会指犯错误,这一庞年夜的端方能年夜年夜加重按次员调试、改错的担负。
1.5 目录结构
假定一个软件的头文件数目对照多(如跨越十个),伟年夜应将头文件和界说文件划分保管于不同的目录,以便于维护。
比方可将头文件保管于include目录,将界说文件保管于source目录(可以是多级目录)。
假定某些头文件是公有的,它不会被用户的按次间接援用,则没有必要地下其“声明”。为了加强');信息隐蔽,这些公有的头文件可以和界说文件存放于一致个目录。
版权声明:
原创作品,答应转载,转载时请务必以超链接方法标明文章 原始来由 、作者信息和本声明。否则将穷究功令责任。