华为CC语言编程规范.docx
- 文档编号:1190422
- 上传时间:2022-10-18
- 格式:DOCX
- 页数:12
- 大小:21.67KB
华为CC语言编程规范.docx
《华为CC语言编程规范.docx》由会员分享,可在线阅读,更多相关《华为CC语言编程规范.docx(12页珍藏版)》请在冰豆网上搜索。
华为CC语言编程规范
1排版
¹1-1:
程序块要采纳缩进风格编写,缩进的空格数为4个。
说明:
关于由开发工具自动生成的代码能够有不一致。
¹1-2:
相对独立的程序块之间、变量说明以后必需加空行。
示例:
如下例子不符合规范。
if(!
valid_ni(ni))
{
...epssn_index;
repssn_ni=ssn_data[index].ni;
应如下书写
if(!
valid_ni(ni))
{
...epssn_index;
repssn_ni=ssn_data[index].ni;
¹1-3:
较长的语句(>80字符)要分成多行书写,长表达式要在低优先级操作符处划分新行,操作符放在新行之首,划分出的新行要进行适当的缩进,使排版整齐,语句可读。
示例:
=NO7_TO_STAT_PERM_COUNT_LEN
+STAT_SIZE_PER_FRAM*sizeof(_UL);
act_task_table[frame_id*STAT_TASK_CHECK_NUMBER+index].occupied
=stat_poi[index].occupied;
act_task_table[taskno].duration_true_or_false
=SYS_get_sccp_statistic_state(stat_item);
report_or_not_flag=((taskno &&(n7stat_stat_item_valid(stat_item)) &&(act_task_table[taskno].result_data! =0)); ¹1-4: 循环、判定等语句中如有较长的表达式或语句,则要进行适应的划分,长表达式要在低优先级操作符处划分新行,操作符放在新行之首。 示例: if((taskno &&(n7stat_stat_item_valid(stat_item))) { ...ord_length) &&(j<;i++,j++) { ....tat_object), sizeof(_STAT_OBJECT)); n7stat_flash_act_duration(stat_item,frame_id*STAT_TASK_CHECK_NUMBER +index,stat_object); ¹1-6: 不许诺把多个短语句写在一行中,即一行只写一条语句。 示例: 如下例子不符合规范。 =0;=0; 应如下书写 =0; =0; ¹1-7: if、for、do、while、case、switch、default等语句自占一行,且if、for、do、while等语句的执行语句部份不管多少都要加括号{}。 示例: 如下例子不符合规范。 if(pUserCR==NULL)return; 应如下书写: if(pUserCR==NULL) { return; } ¹1-8: 对齐只利用空格键,不利用TAB键。 说明: 以避免用不同的编辑器阅读程序时,因TAB键所设置的空格数量不同而造成程序布局不整齐,不要利用BC作为编辑器合版本,因为BC会自动将8个空格变成一个TAB键,因此利用BC合入的版本大多会将缩进事变。 ¹1-9: 函数或进程的开始、结构的概念及循环、判定等语句中的代码都要采纳缩进风格,case语句下的情形处置语句也要遵从语句缩进要求。 ¹1-10: 程序块的分界符(如C/C++语言的大括号‘{’和‘}’)应各独占一行而且位于同一列,同时与引用它们的语句左对齐。 在函数体的开始、类的概念、结构的概念、列举的概念和if、for、do、while、switch、case语句中的程序都要采纳如上的缩进方式。 示例: 如下例子不符合规范。 for(...){ ....) { .....) { ....) { ....前后不加空格。 ¹p->id=pid;文件、.inc文件、.def文件、编译说明文件.cfg等)头部应进行注释,注释必需列出: 版权说明、版本号、生成日期、作者、内容、功能、与其它文件的关系、修改日记等,头文件的注释中还应有函数功能简要说明。 示例: 下面这段头文件的头注释比较标准,固然,并非局限于此格式,但上述信息建议要包括在内。 /************************************************* Copyright(C),1988-1999,HuaweiTech.Co.,Ltd. Filename: .... History: Date: Author: Modification: 2.... *************************************************/ ¹2-3: 源文件头部应进行注释,列出: 版权说明、版本号、生成日期、作者、模块目的/功能、要紧函数及其功能、修改日记等。 示例: 下面这段源文件的头注释比较标准,固然,并非局限于此格式,但上述信息建议要包括在内。 /************************************************************ Copyright(C),1988-1999,HuaweiTech.Co.,Ltd. FileName: Author: Version: Date: Description: ------- History: epssn_index; repssn_ni=ssn_data[index].ni; 例2: repssn_ind=ssn_data[index].repssn_index; repssn_ni=ssn_data[index].ni; /*getreplicatesubsystemindexandnetindicator*/ 应如下书写 /*getreplicatesubsystemindexandnetindicator*/ repssn_ind=ssn_data[index].repssn_index; repssn_ni=ssn_data[index].ni; ¹2-9: 关于所有有物理含义的变量、常量,若是其命名不是充分自注释的,在声明时都必需加以注释,说明其物理含义。 变量、常量、宏的注释应放在其上方相邻位置或右方。 示例: /*activestatistictasknumber*/ #defineMAX_ACT_TASK_NUMBER1000 #defineMAX_ACT_TASK_NUMBER1000/*activestatistictasknumber*/ ¹2-10: 数据结构声明(包括数组、结构、类、列举等),若是其命名不是充分自注释的,必需加以注释。 对数据结构的注释应放在其上方相邻位置,不可放在下面;对结构中的每一个域的注释放在此域的右方。 示例: 可按如下形式说明列举/数据/联合结构。 /*sccpinterfacewithsccpuserprimitivemessagename*/ enumSCCP_USER_PRIMITIVE { N_UNITDATA_IND,/*sccpnotifysccpuserunitdatacome*/ N_NOTICE_IND,/*sccpnotifyuserthenetworkcannot*/ /*transmissionthismessage*/ N_UNITDATA_REQ,/*sccpuser'sunitdatatransmissionrequest*/ }; ¹2-11: 全局变量要有较详细的注释,包括对其功能、取值范围、哪些函数或进程存取它和存取时注意事项等的说明。 示例: /*TheErrorCodewhenSCCPtranslate*/ /*GlobalTitlefailure,asfollows*/.) { ... break; } else { ProcessCFW_B();. ½2-1: 幸免在一行代码或表达式的中间插入注释。 说明: 除非必要,不该在代码或表达中间插入注释,不然容易使代码可明白得性变差。 ½2-2: 通过对函数或进程、变量、结构等正确的命名和合理地组织代码的结构,使代码成为自注释的。 说明: 清楚准确的函数、变量等的命名,可增加代码可读性,并减少没必要要的注释。 ½2-3: 在代码的功能、用意层次上进行注释,提供有效、额外的信息。 说明: 注释的目的是说明代码的目的、功能和采纳的方式,提供代码之外的信息,帮忙读者明白得代码,避免没必要的重复注释信息。 示例: 如下注释意义不大。 /*ifreceive_flagisTRUE*/ if(receive_flag) 而如下的注释则给出了额外有效的信息。 /*ifmtpreceiveamessagefromlinks*/ if(receive_flag) ½2-4: 在程序块的终止行右方加注释标记,以表明某程序块的终止。 说明: 今世码段较长,专门是多重嵌套时,如此做能够使代码更清楚,更便于阅读。 示例: 参见如下例子。 if(...) { ¹.)*/.),建议除要有具体含义外,还能表明其变量类型、数据类型等,但i、j、k作局部循环变量是许诺的。 说明: 变量,尤其是局部变量,若是用单个字符表示,很容易敲错(如i写成j),而编译时又检查不出来,有可能为了那个小小的错误而花费大量的查错时刻。 示例: 下面所示的局部变量名的概念方式能够借鉴。 intliv_Width 其变量名说明如下: l局部变量(Local)(其它: g全局变量(Global)...) i数据类型(Interger) v变量(Variable)(其它: c常量(Const)...) Width变量含义 如此能够避免局部变量与全局变量重名。 ¹3-5: 命名规范必需与所利用的系统风格维持一致,并在同一项目中统一,比如采纳UNIX的全小写加下划线的风格或大小写混排的方式,不要利用大小写与下划线混排的方式,用作特殊标识如标识成员变量或全局变量的m_和g_,其后加上大小写混排的方式是许诺的。 示例: Add_User不许诺,add_user、AddUser、m_AddUser许诺。 ½3-1: 除非必要,不要用数字或较奇怪的字符来概念标识符。 示例: 如下命名,令人产生疑惑。 #define_EXAMPLE_0_TEST_ #define_EXAMPLE_1_TEST_ voidset_sls00(BYTEsls); 应改成成心义的单词命名 #define_EXAMPLE_UNIT_TEST_ #define_EXAMPLE_ASSERT_TEST_ voidset_udt_msg_sls(BYTEsls); ½3-2: 在同一软件产品内,应计划好接口部份标识符(变量、结构、函数及常量)的命名,避免编译、链接时产生冲突。 说明: 对接口部份的标识符应该有更严格限制,避免冲突。 如可规定接口部份的变量与常量之前加上“模块”标识等。 ½3-3: 用正确的反义词组命名具有互斥意义
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 华为 CC 语言 编程 规范