热度 24
2014-8-14 14:14
1035 次阅读|
0 个评论
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 尽量避免循环体内含有判断语句