当前位置:首页 > 技术知识 > 正文内容

单片机C语言编程,心得都在这里了

maynowei11个月前 (08-02)技术知识192

单片机写代码总踩坑,头文件被无视,老工程师的经验哪里来?

前几天写8x8矩阵键盘的程序,搞了三天代码一直乱报错。后来发现自己连头文件是什么都不清楚,之前写的都是小程序,压根没碰过.h文件。看别人的程序都有个KEY.H,里面写着Keyhit()这些函数名字,才知道头文件这么重要。

以前觉得写代码就是把功能实现就行,现在才知道项目做大了必须得规范。头文件就像施工图纸,告诉其他开发者这个模块有什么功能。比如键盘驱动的头文件写清楚有哪些函数,别人要用的时候直接include进来就行。不然大家改同一个程序,参数改错了或者函数名重复了,bug一堆根本找不出来。

有个朋友之前做项目就没用头文件,结果六个工程师一起改代码,编译器天天报重复定义错误。后来被迫重新整理,头文件一建好,效率立马提高。其实头文件核心就两部分,一是防止重复引用,用ifndef那个符号;二是把函数和变量声明放里面,具体实现放在.c文件。

我第一次写头文件时,就在KEY.H里写了两个函数:keyhit()判断有没有按键,Keyscan()读取键值。加上ifndef _KEY_H_这些防护代码,编译时就不会重复加载。虽然刚开始觉得麻烦,慢慢发现好处多得很。别人用我的键盘模块时,只需要看头文件就知道能调什么函数,不用打开整个.c文件找逻辑。

调试的时候有个案例特别清楚。有次把Keyscan()的返回值类型写错了,在头文件写的是int,实际.c里用了char,结果程序完全跑飞了。要是不看头文件对照的话,半天找不着问题。现在养成习惯,改函数参数一定先同步头文件,不然肯定出错。

还有个好处是保护代码隐私。公司做项目的时候,可以只给别人的工程里放头文件和生成的库文件,源码不用暴露。这样别人没法随意改我的算法,也避免版本混乱。以前觉得这是大项目才需要的东西,现在发现哪怕做个小玩意,规范一点也能少走很多弯路。

最近又试着把液晶屏驱动模块也拆出来,写了个LCD.H。虽然开始折腾半天,但现在想改显示内容时,直接调用库函数就行。之前写混编代码的时候,全局变量到处定义,现在都统一在头文件声明,管理方便多了。

有时候看论坛里的代码,那些没用头文件的老程序员回复:“年轻时我也乱写,现在项目做大了才懂规矩。” 现在我终于明白,写代码不只是功能实现,结构清晰才能走得长远。

相关文章

产品经理的术与器:从想法到产品原型

工欲善其事,必先利其器。从idea,到product,中间的可谓要经历几番曲折, 产品定位确定决定产品的生死,产品功能需求的确定决定着开发的周期和试错的成本,互联网拼的就是快,所以要做 MVP(最小化...

伪装成抖音国际版Tiktok的短信蠕虫

概述近期监测到一款仿冒Tiktok的短信蠕虫,该短信蠕虫最明显的特点就是针对Android系统版本高于6.0以上的设备,由于Android版本的更新迭代,现在大部分设备已经更新到较高的版本,通过不完全...

Oracle又双叕开始严查JDK,连夜提桶跑路

哈佛商业报道了最近几起北美的JDK许可问题公司用了来源不明的JDK,怕蹲里面,连夜提桶跑路The company uses JDK from unknown sources, and is afrai...

Think in Mingdao——人人都是全栈工程师

文/明道云销售部顾问 文静编辑/蒋礼轩一、引言在软件开发领域,有这样一类"Think"系的书籍被广大程序员们奉为经典,如:Think in C++、Think in C#、Think...

每天学Java!Java Bean是什么概念(java bean有什么用)

对于初学Java,或者是刚接触J2EE的人来说,Java bean确实是一个不太好理解的概念,对于一些专业的解释呢,好像看起来也不是那么容易理解。所以小华君今天就准备跟大家说一说Java bean的概...

一文带你彻底搞懂Proxy和Reflect!

有一道面试题,题目要求应用 Proxy 实现数据倒序访问,如: var arr=[1, 2, 3, 4]; arr[-1] 返回 4,arr[-2] 返回 3。这个题目很显然在考察 Proxy 对象的...