头文件|“朝闻道”知识分享大赛

ZoopSeek 2024-11-29 19:47:36

这是我参加朝闻道知识分享大赛的30篇文章。


概念

在C语言家族程序中,头文件被大量使用。一般而言,每个C++/C程序通常由头文件和定义文件组成。头文件作为一种包含功能函数、数据接口声明的载体文件,主要用于保存程序的声明,而定义文件用于保存程序的实现。

程序简介

一般在一个应用开发体系中,功能的真正逻辑实现是以硬件层为基础,在驱动程序、功能层程序以及用户的应用程序中完成的。

头文件的主要作用在于多个代码文件全局变量(函数)的重用、防止定义的冲突,对各个被调用函数给出一个描述,其本身不需要包含程序的逻辑实现代码,它只起描述性作用,用户程序只需要按照头文件中的接口声明来调用相关函数或变量,链接器会从库中寻找相应的实际定义代码。 

从以上结构图来看,头文件是用户应用程序和函数库之间的桥梁和纽带。在整个软件中,头文件不是最重要的部分,但它是C语言家族中不可缺少的组成部分。编译时,编译器通过头文件找到对应的函数库,进而把已引用函数的实际内容导出来代替原有函数。进而在硬件层面实现功能。

组成

C++/C程序的头文件以“.h”为后缀。以下是假设名称为graphics.h的头文件:

1#ifndef GRAPHICS_H//作用:防止graphics.h被重复引用

2#define GRAPHICS_H

3#include<....>//引用标准库的头文件

4...

5#include"..."//引用非标准库的头文件

6...

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

8...

9inline();//inline函数的定义

10... 11classBox//作用:类结构声明

12{

13...

14};

15#endif

从以上例子可以看出,头文件一般由四部分内容组成:

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

(2)预处理块;

(3)inline函数的定义;

(4)函数和类结构声明等。

在头文件中,用 ifndef/define/endif结构产生预处理块,用 #include 格式来引用库的头文件。头文件的这种结构,是利用C语言进行开发软件所通常具备的,属于公有知识。

示例

conio.h不是C标准库中的头文件,是vc下的一个头文件。

conio是Console Input/Output(控制台输入输出)的简写,其中定义了通过控制台进行数据输入和数据输出的函数,主要是一些用户通过按键盘产生的对应操作,比如getch()函数等等。

包含的函数

cgets(char *);

cprintf(const char *, ...);

cputs(const char *);

cscanf(const char *, ...);

inp(unsigned short);

inpw(unsigned short);

getch(void);

getche(void);

kbhit(void);

outp(unsigned short, int);

outpw(unsigned short, unsigned short);

putch(int);

ungetch(int);

用途

什么样的内容适合放在头文件里?

对于具有外部存储类型的标识符,可以在其他任何一个源程序文件中经声明后引用,此用户完全可以将一些具有外部存储类型的标识符的声明放在一个头文件中。具体地说,头文件中可以包括:用户构造的数据类型(如枚举类型),外部变量,外部函数、常量和内联函数等具有一定通用性或常用的量。而一般性的变量和函数定义不宜放在头文件中。

例如:#include<stdio.h>中的头文件stdio.h作用是让链接器通过头文件里的函数声明找到函数实际代码所在的位置即所在的库文件,这样才能使用该函数的实际代码,函数的实际代码的实现过程是先让链接器通过头文件里函数的声明找到函数实际代码所在的位置即所在的库文件,再通过#include语句把链接器所找到的函数实际代码用链接器把函数的实际代码链接到当前文件即所要执行的程序中。

当然有些函数的使用不需要提供头文件,但是在ISO/ANSI C已经对有些函数的使用必须提供哪些头文件制定了标准。 

分类

1、传统 C++

1#include<assert.h>//设定插入点

2#include<ctype.h>//字符处理

3#include<errno.h>//定义错误码

4#include<float.h>//浮点数处理

5#include<fstream.h>//文件输入/输出

6#include<iomanip.h>//参数化输入/输出

7#include<iostream.h>//数据流输入/输出

8#include<limits.h>//定义各种数据类型最值常量

9#include<locale.h>//定义本地化函数

10#include<math.h>//定义数学函数

11#include<stdio.h>//定义输入/输出函数

12#include<stdlib.h>//定义杂项函数及内存分配函数

13#include<string.h>//字符串处理

14#include<strstrea.h>//基于数组的输入/输出

15#include<time.h>//定义关于时间的函数

16#include<wchar.h>//宽字符处理及输入/输出

17#include<wctype.h>//宽字符分类

2、标准 C++

1#include<algorithm>//STL通用算法

2#include<bitset>//STL位集容器

3#include<bits/stdc++.h>//编译器GCC 4.8支持的万能头文件,基本包含所有头文件

4#include<cctype>//C字符处理

5#include<cerrno>//C的错误报告机制

6#include<clocale>

7#include<cmath>//兼容C语言数学库

8#include<complex>//复数类

9#include<cstdio>//C语言输入输出工具

10#include<cstdlib>//C语言通用工具

11#include<cstring>//C字符串

12#include<ctime>

13#include<deque>//STL双端队列容器

14#include<exception>//异常处理类

15#include<fstream>//文件输入输出流

16#include<functional>//STL定义运算函数(代替运算符)

17#include<limits>

18#include<list>//STL线性列表容器\

19#include<map>//STL映射容器

20#include<iomanip>

21#include<ios>//基本输入/输出支持

22#include<iosfwd>//输入/输出系统使用的前置声明

23#include<iostream>//基本输入输出流

24#include<queue>//STL队列容器

25#include<set>//STL集合容器

26#include<sstream>//基于字符串的流

27#include<stack>//STL堆栈容器

28#include<stdexcept>//标准异常类

29#include<streambuf>//底层输入/输出支持

30#include<string>//字符串类

31#include<utility>//STL通用模板类

32#include<vector>//STL动态数组容器

33#include<cwchar>

34#include<cwctype>

在C++中,标准库的命名空间为std,因而包含了上述头文件时,一般会使用下列语句: 

1using namespace std;

3、C99 版本

1#include<complex.h>//复数处理

2 #include<fenv.h>//浮点环境

3#include<inttypes.h>//整数格式转换

4#include<stdbool.h>//布尔环境

5#include<stdint.h>//整型环境

6#include<tgmath.h>//通用类型数学宏

...全文
59 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
内容概要:本文系统研究了开关频率大于谐振频率(fs>fr)工况下,移相混合控制LLC谐振变换器在低压增益区域的工作特性,深入分析其在变频与移相结合控制模式下的调制机理、工作模态划分及损耗分布规律。通过Simulink平台构建高保真仿真模型,对变换器在不同负载和输入条件下的电压增益、转换效率、关键器件电压电流应力等性能指标进行了全面仿真验证,重点探讨了其在低增益区间的软开关实现能力与效率优化潜力,旨在提升LLC变换器在宽范围输入输出应用中的动态响应与能源转换效率。; 适合人群:从事电力电子变换器设计、高频电源开发及相关领域的高校研究生、科研院所研究人员及企业研发工程师,要求具备扎实的电路理论基础、电力电子技术知识以及一定的Simulink仿真能力。; 使用场景及目标:①深入理解LLC谐振变换器在fs>fr条件下采用移相混合控制的内在工作机理与模态转换过程;②掌握利用Simulink搭建复杂谐振变换器精确仿真模型的方法与技巧;③分析并优化低压增益区的增益特性与损耗构成,为设计高效率、高功率密度的软开关电源提供理论依据和数据支持; 阅读建议:建议读者结合文中所述仿真模型,亲自复现仿真过程,重点观察不同控制参数(如移相比、开关频率)对电压增益曲线和关键波形的影响,并对比传统变频控制策略,深入探究混合控制在拓宽调压范围、提升轻载效率方面的优势,从而深化对现代高效谐振电源设计的理解。
内容概要:本文提出了一种基于粒子群优化算法(PSO)的配电网光伏储能双层优化配置模型,以IEEE33节点系统为标准算例,实现光伏发电单元与储能系统的协同选址与定容优化。该模型采用双层架构设计,上层以投资成本、运行经济性及网络损耗最小为目标优化设备配置方案,下层通过潮流计算评估系统在不同负荷场景下的运行性能,综合考虑电压稳定性、供电可靠性及可再生能源消纳能力,最终通过Matlab编程实现完整求解流程,为高渗透率分布式电源接入背景下的配电网规划提供了有效的技术支撑。; 适合人群:具备电力系统分析基础和Matlab编程能力的研究生、高校科研人员及从事新能源并网、智能配电网规划与优化的工程技术人员。; 使用场景及目标:①研究含高比例光伏接入的配电网规划与运行协同优化问题;②掌握双层优化建模方法与粒子群算法在复杂电力系统问题中的应用技巧;③为实际工程中分布式光伏与储能系统的科学选址与容量配置提供理论依据与仿真验证平台。; 阅读建议:建议读者结合Matlab代码深入理解双层迭代求解机制,重点关注算法收敛性分析、参数敏感性测试,并可通过更换初始种群、调整权重因子或引入其他标准测试系统(如IEEE69节点)进行对比实验,进一步验证所提模型的普适性与鲁棒性。

1,040

社区成员

发帖
与我相关
我的任务
社区描述
中南民族大学CSDN高校俱乐部聚焦校内IT技术爱好者,通过构建系统化的内容和运营体系,旨在将中南民族大学CSDN社区变成校内最大的技术交流沟通平台。
经验分享 高校 湖北省·武汉市
社区管理员
  • c_university_1575
  • WhiteGlint666
  • wzh_scuec
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

欢迎各位加入中南民族大学&&CSDN高校俱乐部社区(官方QQ群:908527260),成为CSDN高校俱乐部的成员具体步骤(必填),填写如下表单,表单链接如下:
人才储备数据库及线上礼品发放表单邀请人吴钟昊:https://ddz.red/CSDN
CSDN高校俱乐部是给大家提供技术分享交流的平台,会不定期的给大家分享CSDN方面的相关比赛以及活动或实习报名链接,希望大家一起努力加油!共同建设中南民族大学良好的技术知识分享社区。

注意:

1.社区成员不得在社区发布违反社会主义核心价值观的言论。

2.社区成员不得在社区内谈及政治敏感话题。

3.该社区为知识分享的平台,可以相互探讨、交流学习经验,尽量不在社区谈论其他无关话题。

试试用AI创作助手写篇文章吧