当前位置: 首页 > news >正文

51单片机——模块化编程

1、模块化编程介绍

传统方式编程:所有的函数均放在main.c里,若使用的模块比较多,则一个文件内会有很多的代码,不利于代码的组织和管理,而且很影响编程者的思路。

模块化编程:把各个模块的代码放在不同的.c文件里,在.h文件里提供外部可调用函数的声明,其它.c文件想使用其中的代码时,只需要#include "XXX.h"文件即可。使用模块化编程可极大的提高代码的可阅读性、可维护性、可移植性等。

2、模块化编程框图

3、模块化编程注意事项

.c文件:函数、变量的定义

.h文件:可被外部调用的函数、变量的声明

任何自定义的变量、函数在调用前必须有定义或声明(同一个.c)

使用到的自定义函数的.c文件必须添加到工程参与编译

使用到的.h文件必须要放在编译器可寻找到的地方(工程文件夹根目录、安装目录、自定义)

4、C预编译

C语言的预编译以#开头,作用是在真正的编译开始之前,对代码做一些处理(预编译)

此外还有#ifdef,#if,#else,#elif,#undef等

5、模块化后的代码

该代码由上一节(数码管控制)修改而来

编译无错误

 

相关文章:

  • Unity编辑器扩展之Hierarchy面板扩展
  • 数美Android SDK
  • 【412】【统计近似相等数对 I】
  • docker python 3.11 容器报错
  • [M模拟] lc3153. 所有数对中数位不同之和(模拟+按位统计)
  • golang 多版本管理工具
  • IDEA没有SQL语句提示
  • 【Springboot服务实现类】用户登录逻辑梳理(未完待续)
  • 数据库与缓存一致性的解决方案
  • django(一):项目搭建
  • python-pptx - Python 操作 PPT 幻灯片
  • Node.js中离线集成ip2region:实现高效的IP地址定位
  • 【网络安全】服务基础第一阶段——第六节:Windows系统管理基础---- DNS部署与安全
  • 单片机的主流编程语言是什么
  • Vue的计算属性:methods方法、computed计算属性、watch监听属性
  • 《Java8实战》-第四章读书笔记(引入流Stream)
  • es6要点
  • extjs4学习之配置
  • Java IO学习笔记一
  • JS基础之数据类型、对象、原型、原型链、继承
  • js中的正则表达式入门
  • mysql常用命令汇总
  • Travix是如何部署应用程序到Kubernetes上的
  • Vue--数据传输
  • 持续集成与持续部署宝典Part 2:创建持续集成流水线
  • 创建一种深思熟虑的文化
  • 关于springcloud Gateway中的限流
  • 力扣(LeetCode)357
  • 实战:基于Spring Boot快速开发RESTful风格API接口
  • 使用 5W1H 写出高可读的 Git Commit Message
  • 微信小程序开发问题汇总
  • [Shell 脚本] 备份网站文件至OSS服务(纯shell脚本无sdk) ...
  • Prometheus VS InfluxDB
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • ​LeetCode解法汇总2670. 找出不同元素数目差数组
  • ​一些不规范的GTID使用场景
  • #常见电池型号介绍 常见电池尺寸是多少【详解】
  • $.ajax,axios,fetch三种ajax请求的区别
  • (c语言版)滑动窗口 给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度
  • (Forward) Music Player: From UI Proposal to Code
  • (M)unity2D敌人的创建、人物属性设置,遇敌掉血
  • (Redis使用系列) Springboot 整合Redisson 实现分布式锁 七
  • (TipsTricks)用客户端模板精简JavaScript代码
  • (搬运以学习)flask 上下文的实现
  • (二)测试工具
  • (附源码)springboot电竞专题网站 毕业设计 641314
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (切换多语言)vantUI+vue-i18n进行国际化配置及新增没有的语言包
  • (四)Android布局类型(线性布局LinearLayout)
  • (一)SpringBoot3---尚硅谷总结
  • (一)UDP基本编程步骤
  • (一)基于IDEA的JAVA基础12
  • (已解决)什么是vue导航守卫
  • (转)Android中使用ormlite实现持久化(一)--HelloOrmLite
  • ..thread“main“ com.fasterxml.jackson.databind.JsonMappingException: Jackson version is too old 2.3.1