找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 3447|回复: 5

单片机开发之C语言编程基本规范

[复制链接]
发表于 2017-8-6 10:30:29 | 显示全部楼层 |阅读模式
本规范主要针对单片机编程语言和08编译器而言,包括排版、注释、命名、变量使用、代码可测性、程序效率、质量保证等内容。 * E; a$ n+ E$ F0 t# @2 u/ x; N3 Z
1.基本规则 - A: Y2 {# _6 E# }1 d  r
格式清晰、注释简明扼要、命名规范易懂、函数模块化、程序易读易维护、功能准确实现、代码空间效率和时间效率高、适度的可扩展性、单片机编程规范-标识符命名
! u* R: `/ o* ~2 R! _, f: }
2.标识符命名 2.1 命名基本原则
* z+ p$ x$ v# h& D- _
1)命名清晰明了,有明确含义,使用完整单词或约定俗成的缩写。通常,较短的单词可通过去掉元音字母形成缩写;较长的单词可取单词的头几个字母形成缩写。即"见名知意"。(2)命名风格要自始至终保持一致。
! j. A$ y# c* E; u+ }
3)命名中若使用特殊约定或缩写,要有注释说明。5 k3 D& A! G$ q6 r
4)同一软件产品内模块之间接口部分的标识符名称之前加上模块标识。% o2 g+ b& `& H+ A* Q" c# E, z+ O
2.2 宏和常量命名 1 J6 l1 ^0 Z' p" J# r; V+ B
宏和常量用全部大写字母来命名,词与词之间用下划线分隔。对程序中用到的数字均应用有意义的枚举或宏来代替。
2 U8 T: U: c8 a/ R- ]7 q/ z
2.3 变量命名
/ l7 h1 |( ?6 p: ~
变量名用小写字母命名,每个词的第一个字母大写。类型前缀(u8\s8 etc.)全局变量另加前缀g_。  C, D8 [8 x: ^1 n$ j  J( p
局部变量应简明扼要。局部循环体控制变量优先使用i、j、k等;局部长度变量优先使用len、num等;临时中间变量优先使用temp、tmp等。1 f2 Y* k% C0 ~
2.4 函数命名 & _3 L' ^$ m" _* J$ s: `% z9 \* A
函数名用小写字母命名,每个词的第一个字母大写,并将模块标识加在最前面。. Z) l2 P# P6 t$ |6 c  {
2.5 文件命名 9 R% U1 U: i1 V- D* G2 k
一个文件包含一类功能或一个模块的所有函数,文件名称应清楚表明其功能或性质。
% k( D' A$ w! a1 u9 u4 k
每个.c文件应该有一个同名的.h文件作为头文件。 " n2 U1 Q  F0 }6 Y8 `- @2 a# K7 _
3.注释 3.1 注释基本原则 # @1 D3 \1 @( @
有助于对程序的阅读理解,说明程序在"做什么",解释代码的目的、功能和采用的方法。& W/ u5 s. n1 i1 Q# c0 D  H( W
一般情况源程序有效注释量在30%左右。
! m/ k; ^; z, t8 G5 j' Y  \
注释语言必须准确、易懂、简洁。
: t5 E& W5 R; ]# t. f) R8 n9 F, }
边写代码边注释,修改代码同时修改相应的注释,不再有用的注释要删除。
5 ~5 @  r+ ?# I3 }( A
汇编和C中都用"//",取消";"  不使用段注释" /*  */ "(调试时可用) / V3 S: P% ^+ o7 t8 {! L9 |
3.2 文件注释
: Y, L7 s2 [9 x. y6 W3 m- j
文件注释必须说明文件名、函数功能、创建人、创建日期、版本信息等相关信息。
5 Y7 r0 a" \# _0 D  s) e! x. `. w
修改文件代码时,应在文件注释中记录修改日期、修改人员,并简要说明此次修改的目的。所有修改记录必须保持完整。
  P5 R2 N# ?" {& J
文件注释放在文件顶端,用"/*……*/"格式包含。. A: k- i- w. k
注释文本每行缩进4个空格;每个注释文本分项名称应对齐。
: X: {1 S( ~. L9 j. A. S3 `3 L
/***********************************************************
3 c% G" l# k8 x* s: u6 P
文件名称:
; A1 p* P! I- s" ^1 \
者:, j' [. J7 Z4 H: d
本:5 ?- j3 g3 T' H5 i8 W* T( i: F
明:
* `) w5 @4 P# {
修改记录:2 |5 q* \1 P) u4 E0 k* M
***********************************************************/, E2 S( p3 l: r( X- S( [9 H
3.3 函数注释
, ]6 _, F# ^  R+ ]. i- t7 H$ |$ g
3.3.1 函数头部注释& {4 S# a) U, e# _- h% g! b
函数头部注释应包括函数名称、函数功能、入口参数、出口参数等内容。如有必要还可增加作者、创建日期、修改记录(备注)等相关项目。$ u. [- d$ u: `- X5 J+ {
函数头部注释放在每个函数的顶端,用"/*……*/"的格式包含。其中函数名称应简写为Name(),不加入、出口参数等信息。$ f5 f/ l& v( s2 c- L9 x
/***********************************************************: C0 k# a. u. b  ~$ N
函数名称:/ }8 O& M* H& f5 k) z' `
函数功能:
& `* V' f" h0 a( Q9 h! b
入口参数:
9 p, P, F4 w0 {* _8 F# i) v) P
出口参数:
7 W/ Y, f  D8 }
注:# V( B2 b/ M6 D# n! q, f) n- R
***********************************************************/- H5 v" w7 `6 d8 q3 o
3.3.2 代码注释信、盈、达‘腾讯:以一齐捂捂吧久零久要’
4 q) A  D7 R% [1 H* @' P
代码注释应与被注释的代码紧邻,放在其上方或右方,不可放在下面。如放于上方则需与其上面的代码用空行隔开。一般少量注释应该添加在被注释语句的行2尾,一个函数内的多个注释左对齐;较多注释则应加在上方且注释行与被注释的语句左对齐。
/ f" `) O; Q0 a% Y
函数代码注释用"//…//"的格式。
6 l5 j6 {2 i# d1 W
通常,分支语句(条件分支、循环语句等)必须编写注释。其程序块结束行"}"的右方应加表明该程序块结束的标记"end of ……", 尤其在多重嵌套时。* a% \# ~/ r# {# m9 N& e
3.4 变量、常量、宏的注释 7 E$ Z  y+ N- U; n) {; a
同一类型的标识符应集中定义,并在定义之前一行对其共性加以统一注释。对单个标识符的注释加在定义语句的行尾。
, x$ L  b& J  v4 \* w9 S
全局变量一定要有详细的注释,包括其功能、取值范围、哪些函数或过程存取它以及存取时的注意事项等。1 I* h$ T# u  g" ~2 i0 d/ T; P
注释用"//…//"的格式。
4 t& O- @! |! |) s! b0 f. ?: ?
* X+ N, H# ~( B0 H; {3 [% y. e
回复

使用道具 举报

发表于 2017-8-6 14:24:58 | 显示全部楼层
不仅单片机,其余机械相关控制程序开发也应该这样编程!
发表于 2017-8-6 15:43:31 | 显示全部楼层
谢谢,先收藏起来
发表于 2017-8-6 19:40:13 | 显示全部楼层
单片机的基础知识,值得收藏一波~
发表于 2017-8-8 11:04:22 | 显示全部楼层
学习了
回复

使用道具 举报

 楼主| 发表于 2017-8-9 18:14:16 | 显示全部楼层
共同学习进步
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Archiver|手机版|小黑屋|机械社区 ( 京ICP备10217105号-1,京ICP证050210号,浙公网安备33038202004372号 )

GMT+8, 2025-8-29 13:00 , Processed in 0.079698 second(s), 14 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表