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

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

3天内不再提示

什么是头文件?头文件编写的一般格式要求是怎样?

冬至子 来源:沙鸥笔记 作者:沙鸥笔记 2023-11-08 16:25 次阅读

本文介绍头文件的定义、编写、保存及引用等方面的内容,包括了一般的格式要求、例程等。

什么是头文件?

头文件在C语言程序开发中一般来说是必需的,一般在C程序的开头就得引用头文件。

头文件作为一种包含功能函数、数据接口声明的载体文件,主要用于保存程序的声明,而定义文件用于保存程序的实现。

为什么要用头文件?

如果没有头文件,那么定义只有就在C文件中进行,有几个坏处:

->不便于阅读。定义和功能代码放在一起,可读性变差;

->重复劳动,增加程序量。在各个C文件中,只要用到了就得重新定义一下,重复的代码会变多等。

如需项目开发定制,可Q-Q: 2531二六3726。

头文件编写的一般格式要求是怎样?

很多东西都有格式的,按照格式来做一般不会出错。图 1为头文件定义的一般结构。

开头的#ifndef和最后的#endif需要成对出现,它的含义为假如没有定义某文件的话,那么执行某些操作。在#ifndef和#endif之间可以编写头文件定义的代码,如载入其他头文件、引脚定义、子程序预定义等的。

下表给出了图 1中部分代码的解释。

表 1 图1的要点解释

一个头文件编写的例子

有个例子,会有更加生动的理解。图 2为一个头文件定义的例子,头文件的名字位relaycontrol.h,这个头文件里包含了载入其他头文件、引脚定义、符号变量定义、子程序预定义等内容。

头文件的保存方法

保存头文件一般有2种方法:

(1)、在keil中保存H文件:如例,假如在keil中新建了H文件,编写完头文件代码后,点击保存按钮,命名后保存在电脑硬盘(与引用它的C文件在同一个文件夹)里即可,本例中保存的头文件为relaycontrol.h。

(2)、在电脑里新建一个TXT文件,再改扩展名为.h:在电脑硬盘(与引用它的C文件在同一个文件夹)中新建一个txt文件,写入头文件代码,保存,并改扩展名为.h。本例中将这个txt文件名及扩展名改为relaycontrol.h。

怎么在C程序中引用头文件?

在C程序中,头文件需要先引用后才能使用,一般引用头文件放在程序的开头位置。

在C文件中引用头文件的方法很简单,就是在程序中用“#include”指令把相应的头文件载入就行了。

引用后,在这个C文件中就能使用头文件里已经定义的内容,如定义的引脚、符号变量和子程序等。

是否需要帮助?

提供单片机PLC、电路板、控制器/箱、仪器仪表、机电设备或系统、自动化、工控、传感、数据采集、自控系统、控制系统,软件、APP开发设计定制订做。如有项目需要,可Q:2531二六3726。

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

    关注

    180

    文章

    7604

    浏览量

    136683
  • 头文件
    +关注

    关注

    0

    文章

    25

    浏览量

    9860
收藏 人收藏

    评论

    相关推荐

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

    "); return 0;} 我们先来编译看下,好像没有任何问题。 root@Turbo:~# gcc test.c -o test root@Turbo:~# 同一个头文件,随便包含多少次,都不会有问题,主要是这
    的头像 发表于 11-26 17:19 150次阅读

    可重复头文件的固定结构

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

    编译components文件夹内容引入的头文件不对怎么处理?

    最近在移植LVGL,需要自己写RGB驱动 我把LVGL放在components文件夹中,但编译的时候提示缺少esp_lcd下头文件的引用 仔细找了下发现,编译components内容的时候只引入
    发表于 06-17 07:35

    引用外部文件夹中的头文件时,如何让VSCODE不提示波浪线错误?

    各位好: 我将常用的组件放在项目文件夹以外的某个地方,尝试在项目内引用此文件夹下的组件,失败,在代码中无法include相关头文件。我在main组件中也添加了requires,任然失败。 另外,在VSCODE中,当我引用外部
    发表于 06-07 08:19

    为什么找不到esp_event_legacy.h头文件

    替代esp_event_legacy.h这个头文件呢?谢谢 我再GITHUB上看到里面有些 system_event_t和system_event_info_t等类型的定义,目前就是找不到这些结构体或枚举类型的定义,但是V5.0下又没有这个
    发表于 06-07 08:03

    components包含头文件错误是怎么回事?

    我新建了个工程,添加了个BLE组件,现在我在BLE组件的头文件中包含了如下文件Code: Select all #include \"api/esp_gatt_common_api
    发表于 06-06 07:21

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

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

    STM8L101F3的头文件没有,可以用STM8S103F的头文件替代吗?两者之间有区别吗?

    STM8L101F3的头文件没有,可以用STM8S103F的头文件替代吗?两者之间有区别吗?
    发表于 05-17 06:01

    stm8s103f.h头文件在哪下载?

    我只懂用库编程,不用库反而不会。网上下载别人的程序,找不到stm8s103f.h这样的头文件。请问这样的头文件在哪可以找到?或者谁能给我这样的头文件,谢谢!
    发表于 05-14 06:10

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

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

    请问为什么库函数头文件和寄存器头文件不可共用?

    CLK_CKDIVR=0x01;可是这么编程后就报错iostm8s208mb.h头文件缺少括号,不知道为何库函数头文件与寄存器头文件起时哪构成语法错误了;请问我这个把库函数
    发表于 04-28 06:22

    如何在Cubemx中添加所有的外设头文件

    cubemx是个图形生成代码的软件,可以很好的提高写代码的效率,减少时间。但同时也有个很大的问题:每次设置完后生成的代码,只包含设置的外设的头文件,如果想要添加其他外设的代码,可能会因此报错
    发表于 04-01 07:46

    C语言中的头文件

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

    CY8CKIT-062-WiFi-BT找不到头文件,编辑不了代码怎么处理?

    吗?如果是因为头文件缺失导致的话,那我可以直接把样例项目中的GUI.h复制到自己创建的项目的文件夹下吗?可是我不太清楚放在文件夹的具体位置,可以帮我指明下吗? 另外,我在运行了项目
    发表于 01-25 06:48

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

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