12南京工业大学嵌入式C语言编程规范_v24.pdf

上传人:asd****56 文档编号:70332132 上传时间:2023-01-19 格式:PDF 页数:13 大小:561.06KB
返回 下载 相关 举报
12南京工业大学嵌入式C语言编程规范_v24.pdf_第1页
第1页 / 共13页
12南京工业大学嵌入式C语言编程规范_v24.pdf_第2页
第2页 / 共13页
点击查看更多>>
资源描述

《12南京工业大学嵌入式C语言编程规范_v24.pdf》由会员分享,可在线阅读,更多相关《12南京工业大学嵌入式C语言编程规范_v24.pdf(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、 自动化与电气工程学院自动化与电气工程学院 嵌入式嵌入式 C 语言编程规范语言编程规范 日期日期 2013-12-31 版本版本 V2.4 整理整理 王晓荣王晓荣 一、一、规范说明规范说明 本规范作为南京工业大学自动化与电气工程学院教师、学生从事嵌入式 C 语言等相关开发工作的编程规范。带有索引性质,力求简洁明了,请遵照此规范进行嵌入式 C 语言编程教学和学习。二、二、命名规则命名规则 通用命名规则通用命名规则 1.移植代码和修改部分代码时,保持原命名风格。2.目录名、目录名、文件名、函数名、文件名、函数名、参数名、参数名、变量名变量名等,如果无特殊的需求(如果是引用其他地方,可以保留相应的名

2、称),均采用 Uinx 风格:“全小写全小写+下划线下划线”(特别注明除外)。说明:不同系统对文件名大小写处理不同(MS 的 DOS、Windows 不区分大小写,但是 Linux系统则区分),所以代码文件命名建议统一采用全小写字母命名。示例:3.禁止使用单字节单字节命名变量,但允许定义 i、j、k 作为局部循环变量。4.除了常见的通用缩写通用缩写(附录 A)以外,不使用单词缩写,不得使用汉语拼音。5.用正确的反义词组反义词组(附录 B)命名具有互斥意义的变量或相反动作的函数等。变量名变量名 6.全局变量全局变量和全局全局静态静态变量变量添加前缀。说明:全局变量十分危险,全局变量十分危险,能不

3、用则不用能不用则不用,不得不用时,通过前缀使得全局变量更加醒目,促使使用时更加小心。单个文件内部使用全局变量,应加 static 关键字进行封装,变成全局静态变量 示例:变量类型变量类型 7.基本变量类型基本变量类型用 typedef 按以下形式定义(移植或修改的文件,保持原风格):8.非基本变量类型,如结构、指针、枚举、共同体结构、指针、枚举、共同体不得使用 typedef 形式定义,(移植或修改的文件,保持原风格)。规范的使用方法如下示例。说明:使用 typedef 会隐藏这个变量实际上是什么类型,在传递参数会增加出错概率。示例:结构体声明与定义:枚举类型声明与定义:宏、枚举成员命名宏、枚

4、举成员命名 9.宏、枚举成员宏、枚举成员采用:“全大写全大写+下划线下划线”形式。示例:注:除了头文件或编译开关等特殊标识定义,宏定义不能使用下划线“_”开头和结尾。三、三、程序格式程序格式 10.程序块采用缩进风格编写,每级缩进为 4 个空格个空格。说明:将编辑器的 TAB键设置为自动转 4 个空格输入,这样可以防止程序在别的编辑器内打开时原先的格式排版失效。(若干软件相关设置见附录 C)11.每个“”符号后都应缩进,唯一例外是 switch-case 语句中,case 和 default 应与“”对齐 示例:注:switch 语句必须有 default 分支。12.相对独立的程序块之间、变

5、量说明之后必须加空行。示例:不规范格式:规范格式:13.每行语句 80 个字符个字符要拆分换行(注释除外)。说明:换行时要增加一级缩进,使代码可读性更好;低优先级操作符处划分新行;换行时操作符应该也放下来,放在新行首;换行时建议一个完整的语句放在一行,不要根据字符数断行 示例:14.二元操作符二元操作符,如:赋值操作符、比较操作符、算术操作符、逻辑操作符、位域操作符,如“=”、“+=”、“=”、“=”、“+”、“-”、“*”、“/”、“%”、“&”、“|”、“”、“”等的前后前后都都加空格加空格。15.一元操作符一元操作符,如:“!”、“”、“+”、“-”、“&”(地址操作符),以及关系密切的

6、立即操作符立即操作符(如“-”、“.”)等前前后后都都不加空格不加空格。16.逗号、分号只在后面加空格后面加空格。17.指针与引用符号,在变量定义的时候靠右靠右,在函数返回值时靠左靠左。示例:18.多个短语句(包括赋值语句)不允许写在同一行内,即一行只写一条语句。示例:不好的排版:较好的排版:19.if、for、do、while、case、switch、default 等语句自占一行,且 if、for、do、while 等语句的执行语句部分无论多少都要加括号,(当 while 作为循环等待语句时除外)。示例:20.如果代码行中的运算符比较多,用括号确定表达式的操作顺序,避免使用默认的优先级。示

7、例:21.尽量避免含有否定运算否定运算的条件表达式。示例:四、四、注释注释 22 注释中英文皆可,注释必须简洁准确。注释的位置应该与被描述的代码相邻,可以放在代码的上方上方或右方右方,不可放在下方。23.注释全部按照 doxygen 风格风格。示例:文件头部注释 函数头部注释 语句上方注释:语句右方注释:24.修改别人大段代码时,不要轻易不要轻易删除别人的代码,应该用“/”注释,并注明修改人及日期。示例:五、五、头文件头文件 25.禁止在头文件中定义变量。说明:在头文件中定义变量,将会由于头文件被其他.c 文件包含而导致变量重复定义。26.只能通过包含头文件的方式使用其他.c 提供的接口,禁止

8、在.c 中通过 extern 的方式使用外部函数接口、变量。说明:若 a.c 使用了 b.c 定义的 func()函数,则应当在 b.h 中声明 int func(int input),并在a.c 中通过#include“b.h”来使用 func。禁止通过在 a.c 中直接写 extern int func(int input)来使用 func,这种写法容易在 func 改变时可能导致声明和定义不一致。27.头文件中需添加避免重复定义的代码 说明:头文件名和后缀全部大写,两者之间的“.”用“_”(一个下划线一个下划线)替代,左侧采用“_”(两个下划线两个下划线)以避免重名,另外也可以根据文件名

9、中是否包含多个词语而采用“_”连接起来。示例:28.头文件是模块(Module)或单元(Unit)的对外接口,头文件中应放置对外提供的函数声明、宏定义、类型定义等。说明:内部使用的函数(相当于类的私有方法)声明不应放在头文件中。内部使用的宏、枚举、结构定义不应放入头文件中。六六、函数函数 29.一个函数仅完成一项一项功能功能。30.代码重复超过三次三次时,应该尽可能提炼成函数,消除重复。31.函数有效代码(非空非注释行)不超过 50 行行。(移植或修改代码保持原风格)说明:过长的函数往往意味着函数功能不单一,过于复杂(参考 29 条规则:一个函数只完成一个功能)。32.在源文件范围内声明和定义

10、的所有函数,除非外部可见除非外部可见,否则应该增加 static 关键字。33.如果函数入口参数入口参数为空,必须使用 void 作为入口参数。如果函数没有返回值返回值,那么应声明为 void 类型。34.仅作输入参数使用的指针指针,应在类型前加 const,防止该指针在函数体内被意外修改。说明:目的参数放在前面,源参数放在后面 示例:七七、附录、附录 附录附录 A 全称全称 缩写缩写 全称全称 缩写缩写 address addr list lst administrator adm mailbox mbox application app manage/manager mgr/man arg

11、ument arg maximum max assemble asm memory mem asynchronization asyn message msg average avg minimum min back bk multiplex mux buffer buf object obj button btn operating system os calculate calc origin/original org character char overflow ovf change chg parameter param check chk password psw clear cl

12、r picture pic clock clk pointer ptr column col point pnt/pt command cmd position pos compare cmp previous pre/prev configuration cfg program prg context ctx print prn control ctrl priority prio copy cpy process/procedure proc count cnt properties prop current cur read rd decrease dec receive rcv del

13、ay dly ready rdy delete del reference ref destination dest/dst register reg device dev register reg dictionary dict request req different diff resource res directory dir return ret disable dis schedule sched document doc second sec driver drv segment seg display disp select sel dynamic dyna source s

14、rc enable en semaphore sem end of text etx server svr environment env stack stk error err standard std execute exec start of text stx extend ex/ext storage stg function func/fn string str flag flg summation sum group grp system sys hexadecimal hex synchronize sync i/o system ios temporary temp/tmp i

15、mage img translate/transation/transparent tran/trans increase inc test tst index idx text txt information info timer tmr initial/initialize/initialization init transmit trs insert ins trigger trig length len variable var library lib version ver link lnk write wr 附录附录 B add/remove begin/end create/destroy insert/delete first/last get/release increment/decrement put/get add/delete lock/unlock min/max open/close old/new start/stop next/previous source/target show/hide send/receive source/destination copy/paste up/down 附录附录 C MDK 软件,做如下设置:Source Insight 中。做如下设置:Vim 中,做如下设置:向 Vim 配置文件中添加下列语句:

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 其他杂项

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁