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语言
    +关注

    关注

    180

    文章

    7604

    浏览量

    136750
  • 代码
    +关注

    关注

    30

    文章

    4786

    浏览量

    68549
收藏 人收藏

    评论

    相关推荐

    在ads1261的通用c语言例程中的390行的if是用来区分什么的呢?

    你好我想知道在ads1261的通用c语言例程中的390行的if是用来区分什么的呢,在读取数据中什么情况下取ff,什么情况写取00呢
    发表于 11-27 07:58

    C语言中的头文件能不能重复包含

    C语言中的头文件能不能重复包含? 比如代码写成这样,stdio.h 连续包含了两次。 #include #include int main(){ printf("helloworld
    的头像 发表于 11-26 17:19 158次阅读

    音频子系统主要是用来做什么的,可以用来做PCM编码器吗?

    请问,音频子系统主要是用来做什么的,可以用来做PCM编码器吗?支持PCM编码输出吗?
    发表于 11-07 07:38

    编译器怎么处理同名头文件

    C语言中的include很简单,但不是你想象中的简单。
    的头像 发表于 11-05 16:51 295次阅读
    编译器怎么处理同名<b class='flag-5'>头文件</b>

    hex文件怎么能转回去c语言

    将 .hex 文件直接“转回去”为原始的C语言代码是不可能的,因为 .hex 文件是编译后的二进制文件,它包含了机器码,这些机器码是处理器可
    的头像 发表于 09-02 10:46 2131次阅读

    hex文件如何查看原c语言代码

    直接将 .hex 文件转换回原始的 C 语言代码是不可能的,因为 .hex 文件是二进制文件,它包含了单片机程序编译后的机器码,这些机器码与
    的头像 发表于 09-02 10:37 2198次阅读

    可重复头文件的固定结构

    年轻人,你可曾记得,在修习C语言的时候,见过这样的字句:在创建头文件的时候,一定要加入保护宏。
    的头像 发表于 08-29 10:23 345次阅读
    可重复<b class='flag-5'>头文件</b>的固定结构

    FX3工程导入后头文件找不到是为什么?如何添加头文件路径?

    在网上参考别人的工程项目,但是载入进去之后发现它的头文件都找不到,应该如何添加头文件路径?
    发表于 05-27 07:53

    请问头文件能不能定义变量呢?

    最近在编译一个工程的时候,突然遇到了变量重复定义的问题,根据提示打开这几个 C 文件,并没有发现定义变量的地方。后来再找一找,原来变量定义在了头文件里面。
    的头像 发表于 04-28 09:33 1152次阅读

    SDK5开源库高频注入的头文件怎么没有?

    ST SDK5开源库,高频注入的头文件怎么没有?只有。c文件。怎么能够获得?
    发表于 04-17 07:37

    请问ucos libMicrium.a文件做什么的

    目前在做ucos cyclone上移植,发现官方例子里面用到了libgen目录下libMicrium.a文件。请问这个文件做什么的? 这部分有源代码吗?
    发表于 04-15 08:07

    C语言中的头文件

    #include 指令会指示 C 预处理器浏览指定的文件作为输入。预处理器的输出包含了已经生成的输出,被引用文件生成的输出以及 #include 指令之后的文本输出。
    发表于 02-23 14:06 459次阅读

    C语言中的动态内存管理讲解

    本章将讲解 C 中的动态内存管理。C 语言为内存的分配和管理提供了几个函数。这些函数可以在 头文件中找到。
    的头像 发表于 02-23 14:03 393次阅读
    <b class='flag-5'>C</b><b class='flag-5'>语言</b>中的动态内存管理讲解

    在ADUCM360_project.c文件里面为什么添加DioLid.h头文件会报错?如何正确添加自己编写的头文件

    在ADUCM360_project.c文件里面为什么添加DioLid.h头文件会报错?怎么正确添加自己编写的头文件
    发表于 01-11 06:09

    请问Linear Lab Tool具体是做什么的

    请问Linear Lab Tool具体是做什么的呢?
    发表于 01-05 12:52