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条评论)
登录后参与讨论