当前位置:网站首页>成都控制板设计提供_算是详细了_单片机程序头文件的定义、编写及引用介绍
成都控制板设计提供_算是详细了_单片机程序头文件的定义、编写及引用介绍
2022-04-23 14:27:00 【u010755676】
SO技术分享之31
初听迷茫不必慌,日出雾散路明亮。
本文介绍头文件的定义、编写、保存及引用等方面的内容,包括了一般的格式要求、例程等。
什么是头文件?
头文件在C语言程序开发中一般来说是必需的,一般在C程序的开头就得引用头文件。
头文件作为一种包含功能函数、数据接口声明的载体文件,主要用于保存程序的声明,而定义文件用于保存程序的实现。
为什么要用头文件?
如果没有头文件,那么定义只有就在C文件中进行,有几个坏处:
->不便于阅读。定义和功能代码放在一起,可读性变差;
->重复劳动,增加程序量。在各个C文件中,只要用到了就得重新定义一下,重复的代码会变多等。
如需项目开发定制,可Q-Q: 2531二六3726。
头文件编写的一般格式要求是怎样?
很多东西都有格式的,按照格式来做一般不会出错。图 1为头文件定义的一般结构。
开头的#ifndef和最后的#endif需要成对出现,它的含义为假如没有定义某文件的话,那么执行某些操作。在#ifndef和#endif之间可以编写头文件定义的代码,如载入其他头文件、引脚定义、子程序预定义等的。
下表给出了图 1中部分代码的解释。
表 1 图1的要点解释
#ifndef __XXX_H__ … #endif |
含义为假如没有定义XXX.H,那么就执行某些操作。 If和endif必须成对使用。 |
#define __ XXX _H__ |
定义XXX.H |
#include <xxx.h> |
载入相关的系统头文件xxx.h |
#include “yyy.h” |
载入相关的自定义头文件yyy.h |
sbit x=p; |
系统位定义。一般用于定义引脚,用x代替引脚p。 |
#define X Y |
符号变量定义,X就表示Y值。Y一般为具体数值。X和Y之间有空格 |
void XX(); |
子程序预定义。在其他程序里载入了这个头文件后,就能调用XX子程序。预定义后在对应的C文件里还得编写具体的子程序代码。 |
一个头文件编写的例子
有个例子,会有更加生动的理解。图 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。
本节完,精彩待续。
版权声明
本文为[u010755676]所创,转载请带上原文链接,感谢
https://blog.csdn.net/u010755676/article/details/124356693
边栏推荐
- C语言知识点精细详解——初识C语言【1】——你不能不知的VS2022调试技巧及代码实操【1】
- 分分钟掌握---三目运算符(三元运算符)
- QT actual combat: Yunxi calendar
- ArrayList collection basic usage
- vscode中文插件不生效问题解决
- Redis源码分析之HSET流程与ziplist
- DVWA之暴力破解(Brute Force)Low-->high
- Ali developed three sides, and the interviewer's set of combined punches made me confused on the spot
- 8.3 语言模型与数据集
- redis的五种数据类型
猜你喜欢
ASEMI三相整流桥和单相整流桥的详细对比
C语言知识点精细详解——数据类型和变量【1】——进位计数制
AT89C51 MCU digital voltmeter development, measuring range 0 ~ 5V, proteus simulation, schematic diagram, PCB and C program, etc
sar命令详解
ASEMI超快恢复二极管与肖特基二极管可以互换吗
AT89C52单片机的频率计(1HZ~20MHZ)设计,LCD1602显示,含仿真、原理图、PCB与代码等
A blog allows you to learn how to write markdown on vscode
8.3 语言模型与数据集
C语言知识点精细详解——数据类型和变量【2】——整型变量与常量【1】
常见存储类型和FTP主被动模式解析
随机推荐
循环队列的基本操作(实验)
矩阵交换行列
LM317的直流可调稳压电源Multisim仿真设计(附仿真+论文+参考资料)
ArrayList collection basic usage
关于在vs中使用scanf不安全的问题
1 minute to understand the execution process and permanently master the for cycle (with for cycle cases)
Design of single chip microcomputer Proteus for temperature and humidity monitoring and alarm system of SHT11 sensor (with simulation + paper + program, etc.)
四层和八层电梯控制系统Proteus仿真设计,51单片机,附仿真和Keil C代码
Use cases of the arrays class
ASEMI三相整流桥和单相整流桥的详细对比
Four ways of SSH restricting login
ansible及常用模块的使用
51 MCU flowers, farmland automatic irrigation system development, proteus simulation, schematic diagram and C code
flannel 原理 之 TUN模式
Outsourcing for four years, abandoned
LLVM - 生成for循环
Ali developed three sides, and the interviewer's set of combined punches made me confused on the spot
一篇博客让你学会在vscode上编写markdown
8.5 循环神经网络简洁实现
I thought I could lie down and enter Huawei, but I was confused when I received JD / didi / iqiyi offers one after another