原创 单片机编程规范(适合于单片机编程工程师)3

2014-8-14 14:14 1035 24 24 分类: MCU/ 嵌入式 文集: 单片机编程规范

8 单片机C51编程规范-排版 

8.1 缩进 
代码的每一级均往右缩进4个空格的位置. 

8.2 分行 
过长的语句(超过80个字符)要分成多行书写;长表达式要在低优先级操作符处划分新行,操作符放在新行之首,划分出的新行要进适当的缩进,使排版整齐,语句可读.避免把注释插入分行中. 

8.3 空行 
l 文件注释区、头文件引用区、函数间应该有且只有一行空行. 
l 相邻函数之间应该有且只有一行空行. 
l 函数体内相对独立的程序块之间可以用一行空行或注释来分隔. 
l 函数注释和对应的函数体之间不应该有空行. 
l 文件末尾有且只有一行空行. 

8.4 空格 
l 函数语句尾部或者注释之后不能有空格. 
l 括号内侧(即左括号后面和右括号前面)不加空格,多重括号间不加空格. 
l 函数形参之间应该有且只有一个空格(形参逗号后面加空格). 
l 同一行中定义的多个变量间应该有且只有一个空格(变量逗号后面加空格). 
l 表达式中,若有多个操作符连写的情况,应使用空格对它们分隔: 
在两个以上的关键字、变量、常量进行对等操作时,它们之间的操作符前后均加一个空格;在两个以上的关键字、变量、常量进行非对等操作时,其前后均不应加空格; 
逗号只在后面加空格; 
双目操作符,如比较操作符, 赋值操作符"="、"+=",算术操作符"+"、"%",逻辑操作符"&&"、"&",位操作符"<<"、"^"等,前后均加一个空格; 
单目操作符,如"!"、"~"、"++"、"-"、"&"(地址运算符)等,前后不加空格; 
"->"、"."前后不加空格; 
if、for、while、switch等关键字与后面的括号间加一个空格; 

8.5 花括号 
l if、else if、else、for、while语句无论其执行体是一条语句还是多条语句都必须加花括号,且左右花括号各独占一行. 
l do{}while()结构中,"do"和"{"均各占一行,"}"和"while();"共同占用一行. 
if ( ) do 
{ { 

} }while( ); 
else 




8.6 switch语句 
l 每个case和其判据条件独占一行. 
l 每个case程序块需用break结束.特殊情况下需要从一个case块顺序执行到下一个case块的时候除外,但需要在交界处明确注释如此操作的原因,以防止出错. 
l case程序块之间空一行,且只空一行. 
l 每个case程序块的执行语句保持4个空格的缩进. 
l 一般情况下都应该包含default分支. 
Switch ( ) 

case *: 

break; 

case *: 

break; 

default: 

break; 


9 单片机C51编程规范-程序结构 

9.1 基本要求 
l 有main()函数的.c文件应将main()放在最前面,并明确用void声明参数和返回值. 
l 对由多个.c文件组成的模块程序或完整监控程序,建立公共引用头文件,将需要引用的库头文件、标准寄存器定义头文件、自定义的头文件、全局变量等均包含在内,供每个文件引用.通常,标准函数库头文件采用尖角号 标志文件名,自定义头文件采用双撇号″″标志文件名. 
l 每个.c文件有一个对应的.h文件,.c文件的注释之后首先定义一个唯一的文件标志宏,并在对应的.h文件中解析该标志. 
在.c文件中: 
#define FILE_FLAG 
在.h文件中: 
#ifdef FILE_FLAG 
#define XXX 
#else 
#define XXX extern 
#endif 
l 对于确定只被某个.c文件调用的定义可以单独列在一个头文件中、单独调用. 

9.2 可重入函数 
可重入函数中若使用了全局变量,应通过关中断、信号量等操作手段对其加以保护. 

9.3 函数的形参 
l 由函数调用者负责检查形参的合法性. 
l 尽量避免将形参作为工作变量使用. 

9.4 循环 
l 尽量减少循环嵌套层数 
l 在多重循环中,应将最忙的循环放在最内层 
l 循环体内工作量最小 
l 尽量避免循环体内含有判断语句

文章评论0条评论)

登录后参与讨论
我要评论
0
24
关闭 站长推荐上一条 /2 下一条