【高质量C/C++】1.文件结构

【高质量C/C++】—— 1. 文件结构

一、版权和版本声明

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

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

版权和版本声明示例:

/*
* xxxxxxx (c) 2022,某某某某公司
* All rights reserved.
*
* 文件名称:filename.h
* 文件标识:见配置管理计划书
* 摘    要:简要描述文本内容
*
* 当前版本:1.1
* 作    者:作者/修改者名字
* 完成日期:2022年9月10日
*
* 取代版本:1.0
* 原作者  :原作者/修改者名字
* 完成日期:2022年9月9日
*/

二、头文件结构

1. 头文件作用

  1. 利用头文件调用库函数功能,在很多场合源代码不便向用户公布,只需要向用户提供头文件和二进制库即可,用户只需要使用头文件中的接口声明调用库函数功能。
  2. 头文件能加强类型安全检查,如果某个接口被实现或被使用时,头文件声明与其不一致时会报出编译错误,方便程序员修改。

2. 头文件结构及规则

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

  1. 头文件开头的版权和版本声明
  2. 预处理块
  3. 函数和类结构声明等

规则

  1. 为了防止头文件引用,使用ifndef/define/endif结构产生预处理块,预定义标识符用文件名大写就行FILENAME_H
  2. #include <filename.h>来引用标准库头文件(编译器将从标准库目录开始搜索)
  3. #include "filename.h"来引用非标准库头文件(编译器将从用户的工作目录开始搜索)

建议

  1. 头文件中只存放“ 声明”,而不存放“ 定义”。
    • 在C++的语法中,类的成员函数可以在声明的时候被定义,并自动成为内联函数。虽然书写上会方便,但是造成风格的不一致,弊大于利。建议将成员函数的定义与声明分开,不论该函数体有多小。
  2. 不提倡使用全局变量,尽量不要在头文件中出现extern int value这类声明
//版权和版本声明... ...

#ifndef FILENAME_H		//防止filename.h被重复引用
#define FILENAME_H

#include <stdio.h>		//标准库函数
#include "filename.h"	//非标准库函数

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

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

#endif

三、源文件结构

源文件有三部分内容:

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

#include "filename.h"

//全局函数的实现体
void Function1(... ...)
{
    ... ...
}
	... ...

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

四、目录结构

  1. 如果一个软件的头文件数目较多,通常应将头文件和源文件分别保存于不同目录,以便维护
    • 例如可以将头文件保存在include目录,源文件保存在source目录(可以是多级目录)
  2. 如果有些头文件是私有的,它不会被用户直接引用,可以将这些私有头文件和源文件放在一个目录里

猜你喜欢

转载自blog.csdn.net/weixin_52811588/article/details/126982417