0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

C语言头文件是做什么的

Wildesbeast 来源:今日头条 作者:趣味c语言 2020-02-13 15:29 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

今天我们来聊聊C语言中的头文件。

c语言程序代码文件扩展名只能是.c或者.h,换句话说,c语言程序代码只能在扩展名为.c或者.h的文件中编写。我们把.h文件称为头文件。头文件可以在.c文件中引用,也可以在.h文件中引用。

头文件是做什么用的呢?我们来看一段程序代码。

左边是源代码,右边是执行结果。这段代码的功能是打印出字符串“Hello, World!”。

我们能看到,源代码文件第一行是"#include ",也就是引用了头文件stdio.h。现在我们把这一行去掉,再执行一下看看结果。

注:c语言中行前加双斜线“//”代表注释掉这一行,也就是去掉这一行代码。

这时我们发现执行后右边的结果栏出现了报错,为什么呢?这是因为打印语句是printf函数输出的,而printf函数是在头文件stdio.h中声明的,把引用stdio.h这一行去掉,代码在编译时就找不到printf这个函数,所以就报错了。

有的朋友问,我们不引用头文件,把printf函数放在.c文件里可以吗?当然可以。但是printf属于通用函数,几乎每个.c文件都会用到,像这样使用频率极高的函数有很多,甚至有几百个,一个项目里的.c文件也有很多,每个.c文件里放几百个函数声明,是不是很难看?况且我们只想直接调用这些函数,根本不关心这些函数长什么样子,又何必把它罗列在我们的.c文件中?

c语言为我们实现了许多通用的函数,比如拷贝函数、比较函数等等,放在一个通用的函数库中供我们直接使用,而这些函数的声明就放在一些标准的头文件中,stdio.h就是标准头文件之一,我们只要引用这些头文件,就可以直接调用头文件中声明的函数,而无需自己去实现这些函数了。当然,除了可以引用标准头文件,我们也可以根据实际需求,自己创建和编写头文件。

那么头文件的内容只能是函数声明吗?当然不是。除了函数声明,变量定义、结构定义、宏定义都可以放在头文件中,如果你觉得你写的某个函数使用率很高,也可以把它放在头文件中。总而言之,通用的东西都可以放在头文件中。

头文件的引用可以写成“#include ",也可以写成"#include "stdio.h" ", 像下图一样。

头文件用尖括号括起来和用引号括起来意义是不同的,前者意思是让编译器直接去c函数库里或者用户配置的路径去查找,而不会在当前目录去查找。后者意思是让编译器先在当前目录去找,如果当前目录找不到,再去c函数库里或者用户配置的路径去查找。这里所说的当前目录,大家可以理解为引用头文件的文件所在的目录。

好了,今天就跟大家分享到这里。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • C语言
    +关注

    关注

    183

    文章

    7642

    浏览量

    144558
  • 代码
    +关注

    关注

    30

    文章

    4940

    浏览量

    73118
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    VSCode + ESP-IDF环境下给ESP32-S3项目添加头文件

    VSCode + ESP-IDF环境下给ESP32-S3项目添加头文件
    的头像 发表于 11-28 07:27 675次阅读

    C语言和单片机C语言有什么差异

    的目标代码短、运行速度高、存储空间小、符合C语言的ANSI标准,生成的代码遵循Intel目标文件格式,而且可与A51汇编语言PL/M51语言
    发表于 11-14 07:55

    nuclei studio生成的c语言文件是不支持c的语法吗?

    nuclei studio 生成的c语言文件感觉不支持c的语法,因为刚使用这个软件,还请各位大佬帮忙看看
    发表于 10-20 11:02

    头文件保护失效,提示变量重复包含,是什么原因导致的?

    我自定了一个头文件,而且使用了头文件保护机制。但是在两个源文件包含相同的头文件时,依然提示某些变量重复包含。想不出来问题在哪里。 这个文件
    发表于 10-09 06:19

    NCS怎么添加.c.h文件到工程

    Directories添加头文件路径 对工程或者文件夹鼠标右击就可以添加文件或者.c文件管理文件
    的头像 发表于 06-27 14:48 747次阅读
    NCS怎么添加.<b class='flag-5'>c</b>.h<b class='flag-5'>文件</b>到工程

    cypress3014在头文件修改编译后,时间不变,这样头文件的程序有被执行吗?

    你好,请问我在头文件修改编译后,时间不变,这样头文件的程序有被执行吗,怎么解决这个问题
    发表于 05-14 06:50

    深入理解C语言C语言循环控制

    C语言编程中,循环结构是至关重要的,它可以让程序重复执行特定的代码块,从而提高编程效率。然而,为了避免程序进入无限循环,C语言提供了多种循环控制语句,如break、continue和
    的头像 发表于 04-29 18:49 1728次阅读
    深入理解<b class='flag-5'>C</b><b class='flag-5'>语言</b>:<b class='flag-5'>C</b><b class='flag-5'>语言</b>循环控制

    新概念51单片机C语言教程入门、提高、开发、拓展全攻略

    1.6 单片机的C51基础知识介绍 1.6.1 利用C语言开发单片机的优点 1.6.2 C51中的基本数据类型 1.6.3 C51数据类型
    发表于 04-15 13:57

    在TouchFX Designer中运行工程,提示头文件找不到,为什么?

    我在TouchFX Designer 中运行工程,提示头文件找不到。 但是在keil中是可以编译通过的。 请问如何添加编译的头文件到设计器中。
    发表于 03-13 08:20

    全套C语言培训资料—PPT课件

    与共用体、位运算、文件 全套C语言培训资料,共427页,13个章节:C语言概述、程序的灵魂—算法、数据类型 & 运算符与表达式、顺
    发表于 03-12 14:50

    如下图所示,这个二极管是做什么的呢?

    如下图所示,这个二极管是做什么的呢?欢迎大家交流。
    发表于 03-06 07:00

    AI工作流自动化是做什么的

    AI工作流自动化是指利用人工智能技术,对工作流程中的重复性、规则明确的任务进行自动化处理的过程。那么,AI工作流自动化是做什么的呢?接下来,AI部落小编为您分享。
    的头像 发表于 01-06 17:57 1409次阅读

    请问DAC8814中的Pin22,AgndF是做什么的

    请问DAC8814中的Pin22,AgndF是做什么的?说明写的High current analog force ground.不是很明白 还有就是输入时钟频率Fclk为什么是最小50MHz,低于五十兆的时钟不能驱动吗? 多谢
    发表于 01-03 08:31

    erf电缆是做什么的

    ERF电缆是一种采用交联电缆用冷缩或热缩附件的电缆,主要用于额定电压6/1kV及以下配电网或工业装置中的固定敷设。以下是关于ERF电缆的详细介绍: 一、结构特点 导体:ERF电缆由多股铜线和单股铝线绞合而成,具有良好的导电性,适用于低损耗的场合。 绝缘层:其绝缘层一般采用乙丙橡胶或其他绝缘材料制成,且绝缘层一般比交联绝缘厚0.5mm。 外套:部分ERF电缆采用优质橡胶材料作为外套,具备出色的耐磨、耐油及耐腐蚀性能。 二、性能特点 柔软性
    的头像 发表于 01-02 11:08 2131次阅读

    ADS1192拥有的两个GPIO1和GPIO2,是用来做什么的

    看完ADS1192的芯片手册,总结出下列几个不解之处: 1、管脚不理解: a,关于芯片拥有的两个GPIO1和GPIO2,是用来做什么的? b、芯片位双通道,为什么还会有个IN3管脚 c、既然是
    发表于 12-30 07:04