高质量C++/C编程指南(一)文件结构

目录

一、版权和版本的声明

二、头文件的结构

三、定义文件结构

四、头文件作用

五、目录结构


一、版权和版本的声明

版权和版本的声明位于头文件定义文件的开头,主要内容有:

  1. 版权信息。
  2. 文件名称,标识符,摘要。
  3. 当前版本号,作者/修改者,完成日期。
  4. 版本历史信息。
     

/*
* Copyright (c) 2001,北京怪咖公司
* All rights reserved.
*
* 文件名称: filename. h
* 文件标识:见配置管理计划书
* 摘要:简要描述本文件的内容
*
* 当前版本:1.1
* 作者:输入作者(或修改者)名字
* 完成日期:2020年05月31日
*
* 取代版本: 1.0
* 原作者:输入原作者(或修改者)名字
* 完成日期: 2020年05月31日
*/

二、头文件的结构

头文件由三部分内容组成:

  1. 头文件开头处的版权和版本声明(见上面的程序片段)。
  2. 预处理块。
  3. 函数和类结构声明等。
     

[规则1-2-1]  为了防止头文件被重复引用,应当用ifndef/define/endif结构产生预处理块。
[规则1-2-2]  用#include <filename. h>格式来引用标准库的头文件(编译器将从标准库目录开始搜索)。
[规则1-2-3]  用#include“filename. h”格式来引用非标准库的头文件(编译器将从用户的工作目录开始搜索)。
[建议1-2-1]  头文件中只存放“声明”而不存放“定义”。

三个例外:1)值在编译时就已知的const变量的定义可放在头文件中,如:const int num=10;
                  2)类的定义可放在头文件中。
                  3)inline函数。

[建议1-2-2]  不提倡使用全局变量,尽量不要在头文件中出现象extern int value这类声明

// 版权和版本声明见示例1-1,此处省略。


#ifndef  GRAPHICS_ H   //防止graphics. h被重复引用
#define GRAPHICS_ H


   #include <math. h>     // 引用标准库的头文件
   ...
   #include“myheader.h” // 引用非标准库的头文件


   void Function(...);        // 全局函数声明


   class Box                    // 类结构声明
   {
   ...
   };

#endif

三、定义文件结构

定义文件有三部分内容:

  1. 定义文件开头处的版权和版本声明。
  2. 对一些头文件的引用。
  3. 程序的实现体(包括数据和代码)。
     

//版权和版本声明见示例,此处省略。


#include  “graphics.h” //引用头文件
...


//  全局函数的实现体
void Functionl (...)

{
...
}


//  类成员函数的实现体
void Box: :Draw(...)
{

...

}

四、头文件作用

(1)  通过头文件来调用库功能。在很多场合,源代码不便(或不准)向用户公布,只要向用户提供头文件和二进制的库即可。用户只需要按照头文件中的接口声明来调用库功能,而不必关心接口怎么实现的。编译器会从库中提取相应的代码。
(2)  头文件能加强类型安全检查。如果某个接口被实现或被使用时,其方式与头文件中的声明不一致,编译器就会指出错误,这一简单的规则能大大减轻程序员调试、改错的负担。

五、目录结构

  • 如果一个软件的头文件数目比较多( 如超过十个),通常应将头文件和定义文件分别保存于不同的目录,以便于维护。
  • 例如可将头文件保存于include目录,将定义文件保存于source目录(可以是多级目录)。
  • 如果某些头文件是私有的,它不会被用户的程序直接引用,则没有必要公开其“声明”。
  • 为了加强信息隐藏,这些私有的头文件可以和定义文件存放于同一个目录。
     

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值