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

yumo6662个月前 (09-13)技术文章24

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

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

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

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

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

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

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

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

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

相关文章

C++语言程序员编程必收藏的20个经典实战案例(附完整源码)

C++ 作为一门底层高性能语言,拥有广泛的应用领域,从系统开发、游戏引擎、图形图像、嵌入式到人工智能等,都能看到它的身影。本文为你整理并实操了 20 个 必收藏的经典 C++ 案例,帮助你提升实战水平...

C 语言编程_c语言编程题经典100例及答案

小学阶段的 C 语言编程以入门级语法和生活化场景为主,涉及的数学知识均是小学生已学或易理解的内容,核心是将数学概念与基础编程逻辑(变量、运算、判断、循环)结合,解决简单实际问题。以下按「数学知识类别」...

C++编程语言日常20个高级经典用法(含完整源码与输出)

C++ 是一门强大而灵活的编程语言,擅长系统开发、高性能计算、游戏开发等多个领域。以下是 20 个高频但极具价值的 C++ 高级用法案例,配套完整代码与输出结果,助力你快速掌握进阶技巧。 01. 使用...

C语言入门:二重循环_c语言的双重循环

什么是二重循环?循环体内可以是任何语句,任何语句,当然就可以是另一个循环语句。二重循环,就是循环里面再套一个循环。就像我们日常生活中,一周有7天(外层循环),每天有24小时(内层循环),这样组合起来就...

C 语言语法最小完备集详细文档_c语言中最小怎么表示

1. 概念定义与理论基础1.1 最小完备集的定义C 语言语法最小完备集是指能够实现所有可计算函数(满足图灵完备性)的最小语法子集。这一子集仅包含不可被其他语法元素等价替代的核心成分,剔除所有冗余语法结...

信奥赛c++知识点_信奥赛课程

在信息学奥赛(NOIP、CSP 等)中,C++ 是主流编程语言,相比 C 语言,它增加了面向对象特性、标准模板库(STL)、引用、函数重载等功能,这些特性能极大简化代码、提高效率,是解决复杂算法问题的...