`
t225com
  • 浏览: 658086 次
文章分类
社区版块
存档分类
最新评论

C编程规范(个人粗笔)

 
阅读更多

C编程规范Made by Edward.xu

序:此系列规范综合依据本人C/C++语言和JAVA语言的书写习惯以及参考其他规范所总结,不足之处还请见谅。

北京理工大学珠海学院 徐方鑫

E-mail:280599580@qq.com

第一章:说明性文件

1.程序说明性文件

/*****************************************************

Copyright (c/c++), 2010~2011, zhbit, Edward.xu ,ltd,

First name://文件名

Author: Version: Data: //作者,版本,完成日期

Description://程序具体功能描述

Others://其他备注

Function list://封装函数列表

******************************************************/

2.封装函数说明性文件

/******************************************************

Function name://函数名称

Argument://参数列表(名字,类型)

Output://输出(名字,类型)

Function://函数功能说明

******************************************************/

3.调试说明性文件

/******************************************************

Debug data//调试时间

Bug://故障描述

Exclude://故障处理描述

*******************************************************/

第二章:命名约定

1.常量命名

常量的每个单词均大写,单词直接使用下划线连接

etc: #define MAX_VALUE value

const int MAX_VALUE = value;

2.变量命名

1)变量名中第一个单词小写,其后的每个单词的第一个字母大写

etc: Int dayName;

2)用名词命名变量,使变量名能够做到见名识意,必要时允许使用简称

etc: char addess;

char addr;

3)数据变量需要赋初值,当无确定初始值时赋0

etc: int addess=0;

3.方法命名(函数命名)

1)方法名中第一个字母大写,其后全部小写

etc: Int Ture( void );

2)参数必须写明,而且全部小写,局部变量命名以_in为结尾

Int Read( int x_in , int y_in );

4.类命名

1)类名中第一个字母大写,其后每个单词的第一个字母大写

etc: public class PrintStream{}

2)用名词命名类

public class HelloWorld{}

5.全局变量命名

全局变量无论命名为何,结尾以_all为结尾

etc: ( extend ) int x_all;

第三章:注释约定

1. 单行注释

代码后隔一空格进行注释

etc: Int sum; //sum is all the number

2.多行注释

多行注释推荐使用老版C注释的方案

/*

* //注释内容

*

*/

etc:int sum; /*

int number; * sum_number , number is the score , summerl

char sunmmerl; * is the char sun_numer………..

double xgate; */

3.注释推荐用英语写,必要时可以使用中文

第四章:程序的版式

1.空行

1)每个类声明,每个函数体声明之后都要加空行

2)函数体内,逻辑上密切相关的语句不加空行,其他地方加空行分离

etc:

1)

#include <stdio.h>

void delay(int cnt_in)

{

While(cin_in--);

}

void main(void)

{

delay(30000);

Return 0;

}

2

While1

{

Int number=0;

Int sum=0;

Int x=0;

If(x>number)

sun+=x;

else

sun-=x;

}

2.常量

1)常量在程序头进行定义,统一为宏或者CONST的形式,不可夹杂定义

2)避免使用常量作为方法(函数)的参数

3.变量

1)变量定义位于程序开头,若在程序中间定义变量时,需要在程序开头添加注释

2)定义变量时每行仅定义一个,多行时变量需对齐

3)尽量避免使用全局变量,定义全局变量时需要加上说明性注释

4.缩进

1)如果选用的IDE带自动的缩进功能就自动缩进

2)若无缩进功能的话,手动以两个空格符作为缩进(为了程序在不同平台的可移植性建议手动缩进)

3)函数或过程的开始、结构的定义及循环、判断等语句中的代码都要采用缩进风格,case语句下的情况处理语句也要遵从语句缩进要求。

etc:

1)自动缩进

#include <stdio.h>

void main(void)

{

int x=0;

int y=0;

int sum=0;

scanf("%d %d",&x,&y);

sum=x+y;

if(x>y)

printf("hello world");

}

2)手动缩进

#include <stdio.h>

void main(void)

{

int x=0;

int y=0;

int sum=0;

scanf("%d %d",&x,&y);

sum=x+y;

if(x>y)

printf("hello world");

}

5.宏定义

1)宏定义常量时,需要加需要符合常量命名规则

2)宏定义变量表达式时,需要加上括号

3)在定义多个宏变量表达式时,需要用大括号封装成语句块

4)使用宏时,不允许参数发生变化

6.结构化要求

1)程序判断时,禁止使用两条等价的支路

2)禁止GOTO语句

3)当使用IF语句进行判断时,禁止使用else return , else goto

4)多路分支时建议使用case语句

5)循环时避免多个出口,如有特殊情况要中途退出循环,需加注释

6)避免使用条件表达式去替代逻辑运算

7)禁止将短语句写在同一行中

7.较长语句的处理办法

1)长表达式要在低优先级操作符处划分新行,操作符放在新行之首,划分出的新行要进行适当的缩进,使排版整齐,语句可读

2)循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分,长表达式要在低优先级操作符处划分新行,操作符放在新行之首

etc:

1

sum = x*x/100*average

+x/x*100%average

-x%x*100/average

2

Int delay(int cnt_in,

Int dalaynumber_in,

char string_in)

8.主函数规定

1)主函数建议使用int类型规定返回时,函数尾返回0

2)主函数需要定义参数类型,一般为void,当需要使用命令行参数时需要附加注释

etc:

1

Int main(void)

{

return 0;

}

2

void main()

{

}

第五章:容错性约定

1.进行逻辑运算时,避免使用浮点型数据

2. 建议强转,避免使用默认的类型转换

3.多所有用户的输入,进行合法性检查

4.禁止在同一语句中多次应用++--单目运算符,即每个语句仅能最多使用一个++或者单目运算符

5编程时,要防止差1错误

6.在程序测试时需要打开所有告警

7.认真处理程序所能遇到的各种出错情况

分享到:
评论

相关推荐

    行业文档-设计装置-粗笔杆方便带手套持握的冬用型书写笔.zip

    行业文档-设计装置-粗笔杆方便带手套持握的冬用型书写笔

    ios-板书录制演示程序.zip

    1.画板功能,实现了基本的画图功能,粗笔、细笔、颜色切换、橡皮擦等功能 2.导入背景图片,图片可做移动、放大缩小等功能 3.放大板,手机可能存在屏幕过小而导致不好画图的问题,放大板就是为了解决这个问题而开发的。...

    ldap

    该应用程序还忽略了许多LDAP详细信息,用粗笔描画了对象。 这可能取决于您的喜好。 对于我的个人用途,这实际上是完全可以的。这不是什么这不是实际LDAP管理工具(例如Apache Directory Studio)的全面替代。 尽管...

    如何实现光学超分辨(二)

    前面说到,STED通过类似橡皮擦的功能来将点 扩展函数变小。有同学说,我不用橡皮擦,一样能用粗笔画细线啊!只要找两张纸,对成一个细缝,然后再画就可以了。

    一个用于配置移动应用开发环境的自动化脚本

    可以帮助开发者自动安装Android SDK、Android NDK、Java开发工具包(JDK)以及Flutter SDK,这些都是移动应用开发(特别是Android和Flutter应用)所必需的。 脚本首先定义了一些变量,用于存储工具的安装路径和版本。然后,定义了一个install_tool函数,用于检查工具是否已安装,如果没有安装则执行安装命令。 接着,脚本定义了install_android_sdk、install_android_ndk、install_java_jdk、set_java_env和install_flutter_sdk等函数,分别用于安装Android SDK、Android NDK、Java JDK、设置Java环境变量以及安装Flutter SDK。 在主程序部分,脚本按照顺序调用这些函数来安装和配置各个工具。安装完成后,脚本会输出一条消息表示配置已完成。

    AI Agent智能应用从0到1定制开发

    AI Agent智能应用从0到1定制开发 关键特点: 自动化:AI Agent可以自动执行重复性任务,提高效率并减少人力成本。 智能决策:基于复杂的算法,AI Agent能够进行决策支持,分析数据并提供洞察。 自然语言处理:许多AI Agent具备理解和生成自然语言的能力,使其能够与人类用户进行交流。 机器学习:AI Agent可以利用机器学习技术从经验中学习,不断优化其性能。 个性化:AI Agent能够根据用户的行为和偏好提供个性化的体验。 可扩展性:AI Agent可以设计成模块化,方便扩展新功能或适应不同规模的需求。 实时响应:AI Agent能够提供快速的实时响应,满足紧急任务的需求。

    魔方PPT模板04_动态清新绿色学术答辩模板.pptx.zip

    魔方PPT模板04_动态清新绿色学术答辩模板.pptx

    tomcat概述.pdf

    Tomcat是一个广泛使用的开源Web服务器和Servlet容器,它是由Apache软件基金会(ASF)主持的一个项目。Tomcat实现了Java Servlet、JavaServer Pages(JSP)、Java Expression Language(JSTL)和WebSocket等技术规范,并提供了一个用于运行Java Web应用程序的运行时环境。由于其稳定性、可扩展性和灵活性,Tomcat已成为许多企业级Java Web应用程序的首选服务器。 Tomcat最初是由Sun Microsystems在1999年作为Servlet API 2.2和JSP 1.1规范的参考实现而开发的。自那时以来,Tomcat不断发展壮大,成为了一个功能强大且易于使用的Web服务器和Servlet容器。Tomcat的开源性质和广泛的支持使得它成为了许多开发者和企业的首选。

    基于Qt+C++实现的各种炫酷的样式表+源码

    用法链接:https://menghui666.blog.csdn.net/article/details/137888208?spm=1001.2014.3001.5502 基于Qt+C++实现的各种炫酷的样式表,如单选、多选、按钮、日历、表格、下拉框、滚轮等,+源码 基于Qt+C++实现的各种炫酷的样式表,如单选、多选、按钮、日历、表格、下拉框、滚轮等,+源码 基于Qt+C++实现的各种炫酷的样式表,如单选、多选、按钮、日历、表格、下拉框、滚轮等,+源码

    罗茨泵设计sw17可编辑含工程图设计图纸.7z

    罗茨泵设计sw17可编辑含工程图设计图纸.7z

    计算机思维训练+C语言

    计算机思维训练+C语言

    基于JAVA毕业设计-JAVA基于遗传算法的中药药对挖掘系统的设计与实现(源代码+论文).rar

    基于JAVA毕业设计-JAVA基于遗传算法的中药药对挖掘系统的设计与实现(源代码+论文).rar 用数据挖掘技术研究了中药方剂配伍的规律。主要工作:分析了关联规则存在的问题,引入双向关联规则的概念;介绍了遗传算法的基本原理,研究了遗传算法在数据挖掘中的应用;将方剂库转换为位图矩阵,大大提高搜索效率;开发了一个基于遗传算法的中药药对药组挖掘系统。论文组织如下:介绍了研究背景和意义;阐述了相关的理论基础;提出了系统的设计方案;详细展示了基于遗传算法的双向关联规则挖掘系统的实现过程,包括位图矩阵的实现,个体的编码方法,适应度函数的设计,规则的提取,选择、交叉、变异等遗传操作的实现等;利用脾胃类方剂库对系统进行了测试,并对测试结果进行了分析。结果证明:该系统能够快速高效地从方剂库中找出具有重要意义的药对药组,对中医药的研究发展有一定意义。

    C常用算法程序集数值计算数值积分

    C常用算法程序集数值计算数值积分提取方式是百度网盘分享地址

    raun内外盒组装包装设备含工程图sw17可编辑设计图纸.7z

    raun内外盒组装包装设备含工程图sw17可编辑设计图纸.7z

    四路仿PLC继电器控制板原理图+教程+源代码+下位机源代码+上位机源代码+其它技术资料.7z

    四路仿PLC继电器控制板原理图+教程+源代码+下位机源代码+上位机源代码+其它技术资料.7z

    北京天津上海重庆市直辖市的区县财政收入一般公共预算收入税收收入2000-2023.xls

    数据来源:中经数据库 数据范围:各个省份的区县财政收入即一般公共预算收入、税收收入 (一般财政收入即一般公共预算收入的完整度较高。税收收入一般50%的区县会有数据) 数据年度区间:2000-2023(具体看文件名上的年度区间) 珍贵数据,包含了各省所有的区、县、县级市哦,很难找到的哦

    2021年全国职业院校技能大赛模块ALinux评分标准

    2021年全国职业院校技能大赛模块ALinux评分标准

    Centos7下tomcat的安装.zip

    tomcatCentos7下tomcat的安装.zip

    绚彩小清新毕业答辩模板.ppt.zip

    绚彩小清新毕业答辩模板.ppt

    毕业设计-微信小程序选座系统源码.zip

    毕业设计-微信小程序选座系统源码.zip文件 毕业设计-微信小程序选座系统源码.zip文件毕业设计-微信小程序选座系统源码.zip文件毕业设计-微信小程序选座系统源码.zip文件毕业设计-微信小程序选座系统源码.zip文件毕业设计-微信小程序选座系统源码.zip文件毕业设计-微信小程序选座系统源码.zip文件毕业设计-微信小程序选座系统源码.zip文件毕业设计-微信小程序选座系统源码.zip文件毕业设计-微信小程序选座系统源码.zip文件毕业设计-微信小程序选座系统源码.zip文件毕业设计-微信小程序选座系统源码.zip文件毕业设计-微信小程序选座系统源码.zip文件毕业设计-微信小程序选座系统源码.zip文件毕业设计-微信小程序选座系统源码.zip文件毕业设计-微信小程序选座系统源码.zip文件毕业设计-微信小程序选座系统源码.zip文件毕业设计-微信小程序选座系统源码.zip文件毕业设计-微信小程序选座系统源码.zip文件毕业设计-微信小程序选座系统源码.zip文件毕业设计-微信小程序选座系统源码.zip文件毕业设计-微信小程序选座系统源码.zip文件毕业设计-微信小程序选座系

Global site tag (gtag.js) - Google Analytics