在嵌入式开发中,通常会使用C语言编写程序。
C语言的程序通常被分成两个文件:.c文件和.h文件。

文章目录

  • 一、是什么 ?
  • 二、怎么做 ?
  • 总结

一、是什么 ?

.c文件包含了程序的实现部分,其中包含了函数的实现变量的定义等内容。.c文件是可以被编译成可执行文件的。

.h文件包含了程序的接口部分,其中包含了函数的声明结构体的定义等内容。这些代码不是可执行代码,而是提供给其他模块使用的接口。其他模块可以导入这些头文件,并通过调用头文件中声明的函数和定义的结构体来与该模块进行交互。

因此,.c文件和.h文件是相互关联的。通常,每个.c文件都对应一个.h文件。

二、怎么做 ?

  1. 先编写 led.h
// 当一个头文件被多次包含时,预处理器会将该头文件的内容复制到每个包含它的源文件中。
// 如果一个头文件被重复包含多次,就会导致重复定义的问题。
// 当第一次包含头文件时,头文件保护宏被定义,后续再包含头文件时,头文件保护宏已经被定义,预处理器会直接跳过头文件的内容。
// 头文件保护宏可以确保头文件只被包含一次,避免重复定义问题,同时也提高了编译速度
#ifndef LED_H
#define LED_H// 定义 LED 状态
typedef enum {LED_OFF = 0,LED_ON // 不赋值,会根据第一个值计算为 1
} LedStatus;// 打开 LED
void led_open(void);
// 关闭 LED
void led_close(void);#endif
  1. 在 led.c 实现 led.h 中定义的接口,或引用定义好的结构体,宏,枚举等
#include "led.h"// 定义 LED 状态变量
static LedStatus led_status = LED_OFF;// 打开 LED
void led_open(void)
{led_status = LED_ON;
}// 关闭 LED
void led_close(void)
{led_status = LED_OFF;
}
  1. 在 main.c 中导入 led.h,使用定义好的接口
#include "led.h"int main(void)
{// 打开 LEDled_open();return 0;
}

总结

  1. 先编写 led.h;
  2. 再编写 led.c;
  3. 在mian.c 或其他文件中导入 led.h 使用定义好的函数。

C语言中 .c 和 .h 文件有什么关系?相关推荐

  1. C语言中.c和.h文件的区别

    一.区别: 从C编译器角度看,.h和.c皆是浮云,就是改名为.txt..doc也没有大的分别.换句话说,就是.h和.c没啥必然联系.. h中一般放的是同名.c文件中定义的变量.数组.函数的声明,需要让 ...

  2. c语言中的stdbool.h头文件,【C语言】中的stdbool.h头文件

    C语言中的stdbool.h头文件 一.相关基础知识 二.具体内容 Win7下安装的VS2015中的stdbool.h的位置为: F:\Program Files (x86)\Microsoft Vi ...

  3. C语言中:在头文件中使用static定义变量意味着什么?

    C语言中:在头文件中使用static定义变量意味着什么? 看到有一位同学在头文件中这么写: static const wchar_t* g_str1 = - static const wchar_t* ...

  4. c语言中count的头文件,求助C语言大佬 , 只会写到一个.c文件里 ,不会用.h头文件...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 简答题] 实验任务:学生成绩统计 从键盘输入一个班(全班最多不超过30人)学生某门课的成绩,当输入成绩为负值时,输入结束,分别实现下列功能: (1)统计不 ...

  5. C语言中的stdbool.h头文件

    Win7下安装的VS2015中的stdbool.h的位置为: F:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include stdboo ...

  6. C语言中的conio头文件,C中的conio.h头文件在VC++中是什么?

    满意答案 ne9313 2013.05.25 采纳率:41%    等级:12 已帮助:6686人 conio.h不是C标准库中的头文件,其包含的函数有: cgets(char *); cprintf ...

  7. C语言中的string.h头文件

    C库提供了多个处理字符串的函数,ANSI C把这些函数的原型放在string.h头文件中. string.h头文件中常用的函数有strlen(),strcat(),strcmp(),strncmp,s ...

  8. c语言中 include math.h,C语言中的(#includestdio.h和#includemath.h)是什么意思?

    慕码人2483693 include 称为文件包含命令,其作用是把尖括号""或引号<>内指定的文件包含到本程序中,成为本程序的一部分,被包含的文件通常是由系统提供的,其 ...

  9. C语言中的stdlib头文件解析

    stdlib 头文件即standard library(标准库)头文件,里面包含了C.C++语言的最常用的系统函数.包括动态内存管理.随机数生成.与环境之间的通信.整数运算.搜索.排序及转换等. st ...

最新文章

  1. ref和out的区别
  2. 注册博客第一天,有些激动
  3. Spring事务支持:利用继承简化配置
  4. MongoDB学习笔记~MongoDB实体中的值对象
  5. oracle时间用法
  6. 应用上线前的“体检”,你知道需要检测哪些指标吗?
  7. Libra教程之:Libra protocol的逻辑数据模型
  8. php 检查类,检查类是否已定义 - PHP 7 中文文档
  9. unity, undo
  10. python函数式编程读取数据时出现错误_Python编程中,函数遇到问题是抛出错误好还是约定返回值好?...
  11. 微软斥资 260 亿美元收购了 LinkedIn 后却无所作为?
  12. IDEA中解决Edit Configurations中没有tomcat Server选项的问题(附配置Tomcat)
  13. Python基础10—I/O编程
  14. 网易互娱的数据库选型和 TiDB 应用实践
  15. 图的存储结构——邻接表
  16. GeckoView:Mozilla面向移动浏览器打造的渲染引擎
  17. 弹性公网ip到底是什么意思?弹性公网ip与公网ip的区别
  18. 今天我们聊一聊程序员怎么进国企,附上我的2021年国企面经一份,希望对大家有帮助!
  19. 国家电网(部分单位)2020年第二批高校毕业生录用人选公示
  20. string复制部分内容

热门文章

  1. 微信小程序开发部署上线流程
  2. linux的pacemaker集群
  3. 《Python自然语言处理-雅兰·萨纳卡(Jalaj Thanaki)》学习笔记:08 自然语言处理中的机器学习方法
  4. slam中的相机相关
  5. [4G5G专题-89]:流程 - 4G LTE终端在网络侧不同设备中的状态
  6. 第一天 :二分查找+移除元素
  7. HTML5+CSS3小实例:自定义滤镜实现液体加载动画
  8. C语言串的基本操作(assign,compare,concat,index,insert,delete,replace)
  9. 【整理】getopt和getopt_long函数
  10. C termios.h 简单用法