ImageVerifierCode 换一换
格式:DOCX , 页数:78 ,大小:74.34KB ,
资源ID:11942757      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11942757.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(CC++语言代码编写规范.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

CC++语言代码编写规范.docx

1、CC+语言代码编写规范许继集团有限公司发布C/C+语言代码编写规范(征求意见稿)Q/XJ目 次1前 言本标准的附录A为资料性附录。本标准由许继电气股份有限公司提出。本标准由许昌继电器研究所归口。本标准起草单位:许继保护及自动化事业部、科研处、北京许继电气有限公司、珠海许继电气有限公司、深圳市许继昌达电网控制设备有限公司。本标准主要起草人:张新昌、包伟、杨智德、李江林、李旺、王若醒、刘彬、王伟东。C/C+语言编程规范11范围本标准规定了软件编程中程序文件的结构和编程风格方面的一些规则。本标准适用于C/C+编程。12规范性引用文件下列文件中的条款通过本标准的引用而成为本标准的条款。凡是注日期的引用

2、文件,其随后所有的修改单(不包括勘误的内容)或修订版均不适用于本标准,然而,鼓励根据本标准达成协议的各方研究是否可使用这些文件的最新版本。凡是不注日期的引用文件,其最新版本适用于本标准。GB/T 5271.1-2000 信息技术 词汇 第1部分:基本术语GB/T 5271.7-1986 数据处理词汇 07部分:计算机程序设计GB/T 5271.15-1986 数据处理词汇 15部分:程序设计语言13术语和定义GB/T 5271.1-2000、GB/T 5271.7-1986和GB/T 5271.15-1986确立的术语和定义适用于本标准。14文件结构14.1概述每个C/C+程序应至少包括两类文

3、件。一个文件用于保存程序的声明,称为头文件。另一个文件用于保存程序的实现,称为定义文件。C/C+程序的头文件以“.h”为后缀,C程序的定义文件以“.c”为后缀,C+程序的定义文件通常以“.cpp”为后缀(也有一些系统以“.cc”或“.cxx”为后缀)。14.2版权和版本的声明/* Copyright (c) 2001,许继集团有限公司* All rights reserved.* * 文件名称:filename.h* 摘 要:简要描述本文件的内容* 版本号:1.2 作者:作者(修改者) 完成日期:2003年7月20日* * 版本号:1.1 作者:作者(修改者) 完成日期:2003年5月20日*

4、 版本号:1.0 作者:作者(修改者) 完成日期:2003年2月20日*/图1版权和版本的声明版权和版本的声明位于头文件和定义文件的开头(见图1),主要内容有:1 版权信息;2 文件名称,摘要;3 当前版本号,作者/修改者,完成日期;4 版本历史信息。14.3头文件的结构14.3.1概述头文件由三部分内容组成:5 头文件的版权和版本声明(见图1);6 预处理块;7 函数和类结构声明等。若头文件名称为 graphics.h,头文件的结构见图2。/ 版权和版本声明见图1#ifndef GRAPHICS_H / 防止graphics.h被重复引用#define GRAPHICS_H#include

5、/ 引用标准库的头文件#include “myheader.h” / 引用非标准库的头文件void Function1(); / 全局函数声明class Box / 类结构声明; / 其它#endif图2C/C+头文件的结构14.3.2为了防止头文件被重复引用,应当用ifndef/define/endif结构产生预处理块。14.3.3用 #include 格式来引用标准库的头文件(编译器将从标准库目录开始搜索)。14.3.4用 #include “filename.h” 格式来引用非标准库的头文件(编译器将从用户的工作目录开始搜索)。14.3.5头文件中宜只存放“声明” 而不存放“定义”。14

6、.3.6不提倡使用全局变量,不宜在头文件中出现extern int value 这类声明。14.4定义文件的结构定义文件有三部分内容:8 定义文件的版权和版本声明(见图1);9 对一些头文件的引用;10 程序的实现体(包括数据和代码)。若定义文件的名称为 graphics.cpp,定义文件的结构见图3。/ 版权和版本声明见图1#include “graphics.h” / 引用头文件/ 全局函数的实现体void Function1()/ 类成员函数的实现体void Box:Draw()图3C/C+定义文件的结构15程序的版式15.1空行15.1.1在变量声明之后、每个类声明之后和每个函数定义结

7、束之后应加空行(见图4(左)。15.1.2在一个函数体内,逻辑上密切相关的语句之间应不加空行,其它地方应加空行分隔(见图4(右) 。/ 空行void Function1() / 空行void Function2() / 空行void Function3() / 空行while (condition) statement1; / 空行 if (condition) statement2; else statement3; / 空行 statement4; 图4函数之间的空行(左),函数内部的空行(右)15.2代码行15.2.1一行代码宜只做一件事情,如只定义一个变量,或只写一条语句(见图5)。1

8、5.2.2if、for、while、do等语句应自占一行,执行语句不应紧跟其后。不论执行语句有多少都应加(见图5)。int width; / 宽度int height; / 高度int depth; / 深度int width, height, depth; / 宽度高度深度x = a + b;y = c + d;z = e + f;X a + b; y = c + d; z = e + f;if (width height) dosomething();if (width = 2000) / 良好的风格if(year=2000) / 不良的风格if (a=b) & (c=b&c=d) / 不

9、良的风格for (i=0; i10; i+) / 良好的风格for(i=0;i10;i+) / 不良的风格for (i = 0; I 10; i +) / 过多的空格x = a b ? a : b; / 良好的风格x=aFunction(); / 不应写成 b - Function();图6代码行内的空格15.3.1关键字之后应留空格。如if、for、while等关键字之后应留一个空格再跟左括号(,以突出关键字。15.3.2函数名之后应不留空格,紧跟左括号(,以与关键字区别。15.3.3(后面应不留空格,)、,、;前面应不留空格。15.3.4,之后应留空格,如Function(x, y, z)

10、。若;不是一行的结束符号,其后应留空格,如for (initialization; condition; update)。15.3.5赋值操作符、比较操作符、算术操作符、逻辑操作符、位域操作符,如“=”、“+=” “=”、“=”、“+”、“*”、“%”、“&”、“|”、“”等操作符前后应不加空格。1注: 对于表达式比较长的for语句和if语句,为了紧凑起见可以适当地去掉一些空格,如for (i=0; i10; i+)和if (a=b) & (c= very_longer_variable12)& (very_longer_variable3 = very_longer_variable14)&

11、 (very_longer_variable5 ),后不应加空格。4注: 采用这种松散方式编写代码的目的是使代码更加清晰。由于留空格所产生的清晰性是相对的,所以,在已经非常清晰的语句中没有必要再留空格,如果语句已足够清晰则括号内侧(即左括号后面和右括号前面)不需要加空格,多重括号间不必加空格,因为在C/C+语言中括号已经是最清晰的标志了。在长语句中,如果需要加的空格非常多,那么应该保持整体清晰,而在局部不加空格。给操作符留空格时不要连续留两个以上空格。15.6注释15.6.1概述注释分为序言性注释和功能性注释:11 序言性注释通常置于每一个程序模块的开头部分,给出程序的整体说明,对于理解程序具

12、有引导作用;12 功能性注释嵌在源程序体中,用以描述其后的语句或程序段在做什么工作。15.6.2注释行的数量不得少于整个源程序的1/10。15.6.3单行注释原则上不得超过可视窗口宽度。15.6.4若代码本来就是清楚的,则不必加注释。2示例 : i+; / i 加 1,多余的注释15.6.5边写代码边注释,修改代码同时修改相应的注释,以保证注释与代码的一致性。不再有用的注释应删除。在存档的某一版本的源代码中不得存在由于调试而留下的大篇注释。15.6.6注释应当准确、易懂,防止注释有二义性。15.6.7尽量避免在注释中使用缩写,特别是不常用缩写。15.6.8注释的位置应与被描述的代码相邻,可以放

13、在代码的上方或右方,不可放在下方。(见图11)15.6.9在同一函数或模块中的注释应尽量对齐,如下例所示:3示例 :BOOL bReturnCache; /是否将Cache中的内容返回客户端HANDLE FileToWrite; /用来写数据的文件DWORD BytesWritten; /写入的数据长度/* get replicate sub system index and net indicator */repssn_ind = ssn_dataindex.repssn_index;repssn_ni = ssn_dataindex.ni;例1:/* get replicate sub s

14、ystem index and net indicator */repssn_ind = ssn_dataindex.repssn_index;repssn_ni = ssn_dataindex.ni;例2:repssn_ind = ssn_dataindex.repssn_index;repssn_ni = ssn_dataindex.ni;/* get replicate sub system index and net indicator */图11风格良好的注释(左),与风格不良的注释(右)15.6.10当代码比较长,特别是有多重嵌套时,应当在一些段落的结束处加注释,便于阅读(见图12

15、)。/* 函数介绍:* 输入参数:* 输出参数:* 返回值 :*/void Function(float x, float y, float z) if () while () / end of while / end of if图12程序的注释15.6.11注释与所描述内容进行同样的缩排。5注: 可使程序排版整齐,并方便注释的阅读与理解。4示例 : 如下例子,排版不整齐,阅读不方便。void example_fun( void )/* code one comments */ CodeBlock One /* code two comments */ CodeBlock Two应改为如下布局

16、。void example_fun( void ) /* code one comments */ CodeBlock One /* code two comments */ CodeBlock Two15.6.12将注释与其上面的代码用空行隔开。5示例 : 如下例子,显得代码过于紧凑。/* code one comments */program code one/* code two comments */program code two应如下书写/* code one comments */program code one/* code two comments */program cod

17、e two15.6.13函数注释(序言性注释)15.6.13.1单元文件宜不超过1000行(包括注释), 复杂的组件单元可以不受此限制.15.6.13.2每个函数或过程代码必须有注释文字, 每个函数体中,每一小功能段都应有注释。15.6.13.3函数定义之前必须有对整个函数的描述,注释格式如下/*【函数名称】 (必需)【函数功能】 (必需)【参数】 (若有参数则必需注明)【全局变量】 (可选) 【返回值】 (若有返回值则必需注明)【备注】 (可选)【开发者及日期】 (若与头文件注释中的开发者为不同的人,则必需注明)【版本】 (若与头文件注释中的版本不同,则必需注明)【更改记录】 (若有修改,则

18、必需注明) 最后修改 修改日期 更改原因概要版本 【使用情况】 (可选)*/ 注释内容说明:函数名称:应包括函数名及参数;参数:在本项中标明是输入参数(用in表示)还是输出参数(用out表示);全局变量:该函数访问的全局变量和成员全局变量;版本:如1.0;更改记录:每次改动时增加一行注释,说明更改标识,更改日期,人,版本,更改原因概要;使用情况:即函数的调用情况,被调用的次数;6示例 :/*【函数名称】 int My_GetLastModifedTime(CString strFileName,char*FileTime,long *cl)【函数功能】 寻找目标文件,从中读取Last-Modi

19、fied:信息、Contene-Length信息【参数】 FileName in 指向目标文件(从URL而来,需要转换,与目标文件一一对应) FileTime out 获取的Last-Modified:信息 cl out 获取的Contene-Length信息【返回值】 1 文件存在,并从中取得Last-Modified:信息 -1 else【备注】使用了StrStrI函数,所以必须include shlwapi.h文件,且在编译的link项中包括shlwapi.li文件【开发者及日期】 周慈 2000-02-05【版本】 1.0【修改历史】 最后修改 XXX 2000-03-26 修改打开文

20、件的模式,从OPEN_ALWAYS改为OPEN_EXISTING 2000-03-28 返回的时间字符串,最后一位不需要n,而且清除后面的所有空格 版本 1.2【使用情况】仅在ProxyThread函数中被调用一次*/15.6.14程序注释(功能性注释)15.6.14.1变量对所有有特定含义的变量命名,若其不能充分自注释,则必须注释变量意义;全局变量必须有较详细的注释,包括:功能、取值范围、存取关系、哪些函数或过程存取它以及注意事项等。7示例 :/* active statistic task number */#define MAX_ACT_TASK_NUMBER 1000#define MAX_ACT_TASK_NUMBER 1000 /*

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1