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

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

maynowei7个月前 (08-02)技术知识127

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

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

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

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

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

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

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

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

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

相关文章

单打独斗的产品设计师工作流程总结

来人人都是产品经理【起点学院】,BAT实战派产品总监手把手系统带你学产品、学运营。我从入行开始就在一个做自己产品的小公司工作,到现在已经三年了。刚开始工作的时候什么也不懂,老板说让出效果图,就开始直接...

Objective C interface(objective什么意思)

在Objective C里面,interface基本可以理解为其他语言里面的class。当然也有些不同。首先我们可以新建一个Objective-C的file。这里我们添加一个MyClass.m和一个M...

Objective-c单例模式的正确写法「藏」

单例模式在iOS开发中可能算是最常用的模式之一了,但是由于oc本身的语言特性,想要写一个正确的单例模式相对来说比较麻烦,这里我就抛砖引玉来聊一聊iOS中单例模式的设计思路。关于单例模式更多的介绍请参考...

Shopee新手指南:Shopee卖家中心用户界面介绍

1.Shopee各站点前台网页链接:2.Shopee各站点后台网页链接3.Shopee APP下载:安卓版下载链接:https://pan.baidu.com/s/1eSp8M1k#list/path...

Linux系统编程—互斥量mutex(linux 互斥量)

##互斥量mutex前文提到,系统中如果存在资源共享,线程间存在竞争,并且没有合理的同步机制的话,会出现数据混乱的现象。为了实现同步机制,Linux中提供了多种方式,其中一种方式为互斥锁mutex(也...

掌握C语言多线程:高效并发编程指南

一、多线程基础概念介绍多线程编程是现代软件开发中提高程序性能和响应性的重要技术。在C语言中,pthread(POSIX Threads)库是实现多线程编程的标准工具。本节将通俗易懂地介绍多线程的核心概...