C语言文件结构
2026/6/17 6:12:59 网站建设 项目流程

1.前言

在工作中时长用的C,但总感觉缺少了什么,在学习一些视频时看到有推荐《高质量C++/C编程指南》,虽是培训资料,但深受感悟,想将其中的东西自己过一遍,并将其中的一些知识拓展,遂有此专栏

2.正文——文件结构

每个C语言程序通常分为两个文件,一个是.h为后缀,一个是.c为后缀。

.h称为头文件,用于保护程序的声明(declaration )

.c称为定义( definition )文件,用于保存程序的实现(C++是.cpp 为后缀)

2.1版权和版本的声明

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

1)文件名称,摘要

2)版本,时间,作者

3)版权,历史信息

2.2头文件的结构

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

1)头文件开头处的版权和版本声明。

2)预处理块。

3)函数和类结构声明等。

头文件的一些定义有以下规则:

<1>为了防止头文件被重复引用,应当用 ifndef/define/endif 结构产生预处理块。

<2> 用 #include < filename.h> 格式来引用标准库的头文件(使用时编译器会从标准库目录开始搜索)。

<3>用 #include “filename.h” 格式来引用非标准库的头文件(编译器会从用户的工作目录开始搜索)。

小建议:

1.头文件中只存放“声明”而不存放“定义”

在 C++ 语法中,类的成员函数可以在声明的同时被定义,并且自动成为内联函数。这虽然会带来书写上的方便,但却造成了风格不一致,弊大于利。建议将成员函数的定义与声明分开,不论该函数体有多么小。

2.不提倡使用全局变量,尽量不要在头文件中出现象 extern int value 这类声明。

假设头文件名称为Test.h,头文件的结构见下图

定义文件有三部分内容:

(1)定义文件开头处的版权和版本声明(参见 2.1图示 )。

(2) 对一些头文件的引用。

(3) 程序的实现体(包括数据和代码)。

假设定义文件的名称为 Test.cpp, 定义文件的结构见下图

2.3 头文件的理解

在学习的早期,我们可以使用一个源文件来实现我们简单的学习,但在后期不断提高以及大项目中,我们是不可能把所有源码写在一个源文件中,需要很多个源文件,然后编译为一个exe进行输出,如果在每个源文件都要重复写出所有外部函数、类的完整声明,显得有点“傻”,头文件的应用让我们在写代码时更方便,ifndef/define/endif的结构可以防止一个的东西被反复定义,我们当然不可能写出

#include "Test.h"

#include "Test.h"

但却不能确保已经存在于Test.h的某个函数不被再次定义

2.4头文件的作用

防止重复定义或者便利已经在理解中有所说明,还有一个在工作中更多有所体会的作用,

头文件只放声明,而定义(实现)放在.c/.cpp中。这种分离带来的直接好处是:

  • 当源代码不便或不准向用户公布时,只需提供头文件 + 二进制库.lib/.a/.so等)。用户通过头文件中的接口声明调用库功能,无需关心内部实现细节,保护了知识产权。

  • 同时,这种方式允许分别编译与链接,提高大型项目的构建效率

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询