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

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

maynowei9个月前 (08-02)技术知识165

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

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

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

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

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

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

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

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

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

相关文章

B端产品设计之业务设计(b端产品ui设计)

编辑导语:在这篇文章里,作者从解决方案设计、业务流程设计、产品功能设计三个方面,分析了如何进行B端产品的业务设计,感兴趣的小伙伴们一起来看一下吧。前篇文章讲了业务梳理,还没看过的同学可以先看看前篇文章...

2018年度回顾:挖矿木马为什么会成为病毒木马黑产的中坚力量

一、概述根据腾讯御见威胁情报中心监测数据,2018年挖矿木马样本月产生数量在百万级别,且上半年呈现快速增长趋势,下半年上涨趋势有所减缓。由于挖矿的收益可以通过数字加密货币系统结算,使黑色产业变现链条十...

高考一词多义考点! 30个高频词汇,完形填空再也不怕啦

1. address·/a'dres/ v.处理(问题)We must address the issue of climate change.·/'aedres/ n.地址Pleas...

那些技术—Listview的性能提高篇(listview提高效率)

ListView优化一直是一个老生常谈的问题,不管是面试还是平常的开发中,ListView永远不会被忽略掉,那么这篇文章我们来看看如何最大化的优化ListView的性能。 · 1.在adapter中的...

CPU「离奇」飙到 100%!开发者挖出 Linux 内核 16 年老 Bug:这么多年竟无人发现?

【CSDN 编者按】每一次对旧设备的升级都仿佛是一场跨越时代的冒险。本文作者致力于将基于 PXA166 的 Chumby 8 设备从 Linux 2.6.28 版本升级到现代 6.x 版本,然而,在看...

Linux C++实现多线程同步的四种方式(超级详细)

背景问题:在特定的应用场景下,多线程不进行同步会造成什么问题?通过多线程模拟多窗口售票为例:#include <iostream>#include<pthread.h>#inc...