C语言文件结构
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等。用户通过头文件中的接口声明调用库功能无需关心内部实现细节保护了知识产权。同时这种方式允许分别编译与链接提高大型项目的构建效率