C语言编程规范

发布 2019-08-10 06:26:55 阅读 4174

c编码规范。

109条规则+49条建议。

杨福田。目录。

1.文件结构(4条规则+6条建议) 1

1.1 版权和版本的声明 1

1.2 头文件的结构 2

1.3 定义文件的结构 3

1.4头文件和定义文件使用(4条规则+6条建议) 3

2.程序版式(34条规则+2条建议) 4

2.1 空行(4条规则) 4

2.2 **行(5条规则+1条建议) 4

2.3 **行内的空格(6条规则+1条建议) 5

2.4 对齐(4条规则) 6

2.5 长行拆分(2条规则) 7

2.6 修饰符的位置(1条规则) 8

2.7 注释(12条规则) 8

3.标识符命名(15条规则+1条建议) 8

4.常量(7条规则) 10

4.1 const 与#define 的比较(2条规则) 10

4.2 常量定义(5条规则) 10

5.变量(11条规则) 11

6.表达式和基本语句(17条规则+3条建议) 11

6.1 运算符的优先级(1条规则) 11

6.2 复合表达式(4条规则) 12

6.3 if 语句布尔表达式(7条规则) 12

6.4 循环语句(1条规则+3条建议) 15

6.5 switch 语句(2条规则) 16

6.6 goto 语句(1条规则) 16

7.函数设计(16条规则+10条建议) 16

7.1注释规则(1条规则) 16

7.2 函数的使用(1条规则) 16

7.3 参数的规则(4条规则+2条建议) 17

7.4 返回值的规则(6条规则) 17

7.5 函数内部实现的规则(2条规则) 17

7.6 其它建议(6条建议) 18

7.7 使用断言(2条规则+2条建议) 18

8.内存管理(5条规则) 18

8.1 内存使用注意的问题(5条规则) 18

9.其他规范及建议(27条建议) 19

9.1 提高程序的效率(6条建议) 19

9.2 编译问题(2条建议) 19

9.3 兼容性问题(8条建议) 19

9.4性能问题(4条建议) 19

9.5 其他一些有益的建议(7条建议) 20

c程序文件通常分为两类文件:

一类文件用于保存程序的声明(declaration),称为头文件。头文件以“.h”为后缀。

另一类文件用于保存程序的实现(implementation),称为定义(definition)文件。定义文件以“.c”为后缀。

对于简单的c语言程序,一般在把头文件和程序定义文件放在一起,只有一个。c定义文件即可。而对于复杂的程序,则多采用头文件包含的形式并通过多个定义文件实现。

版权和版本的声明一般应该位于头文件和定义文件的开头(参见示例1-1),主要内容包括:

1) 版权信息;

2) 文件名称、文件标识、摘要;

3) 当前版本号、作者/修改者、修改日期、修改描述等;

4) 版本历史信息、原作者、完成日期等。

示例1-1 版权和版本的声明。

版本标识:采用《主版本号》.《次版本号》.

《修订号》 来命名自己产品的编号。一般这样约定,如果次版本号是偶数(如等),代表正式版本,如果次版本号是奇数(如等),代表开发过程中的测试版本。修订号则相当于build号,用来标识一些小的改动。

头文件由三部分内容组成:

1) 文件开头处的版权和版本声明(参见示例1-1);

2) 预处理块;

3) 声明函数原型和声明数据结构或变量等。

假设头文件名称为头文件的结构参见示例1-2。

示例1-2 c头文件结构。

定义文件有三部分内容:

1) 定义文件开头处的版权和版本声明(参见示例1-1);

2) 对一些头文件的引用;

3) 程序的实现体(包括数据和**)。

假设定义文件的名称为定义文件的结构参见示例1-3

示例1-3 c定义文件的结构。

规则1-2-1】在复杂的工程文件中,为了防止头文件被重复引用,应使用ifndef/define/endif 结构产生预处理块。

规则1-2-2】用#include <>格式来引用标准库的头文件(编译器将从标准库目录开始搜索)。

规则1-2-3】用#include “ 格式来引用非标准库的头文件(编译器将从用户的工作目录开始搜索)。

规则1-2-4】只引用必需的头文件,不要为了防止忘记包含头文件而在每个文件开始添加很多的头文件。

建议1-2-1】不要在头文件中定义常量或变量,注意头文件只是用来声明。

建议1-2-2】不提倡使用全局变量,尽量不要在头文件**现像“extern int width;”这类声明。

建议1-2-3】将非系统的函数库放在一个单独的目录下引用。

建议1-2-4】头文件应按功能组织在一起,即对单独子系统的声明应放在单独的头文件中。此外,当**从一个平台移植到另一个平台时有可能发生更改的声明应位于单独的头文件中,并进行相应的注释。

建议1-2-5】避免使用与函数库中专用头文件名相同的头文件名。语句 #include ""如果在当前目录中找不到所期望文件的话,会包括标准库 math 头文件。

建议1-2-6】包含头文件时一般不使用绝对路径名。

空行起着分隔程序段落的作用,空行得体将使程序的布局更加清晰。空行不会浪费内存,所以不要舍不得用空行。

规则2-1-1】在函数内部局部变量定义结束之后处理语句之前要加空行。

规则2-1-2】在每个函数定义结束之后都要加空行。参见示例2-1(a)。

规则2-1-3】函数返回语句和其他语句之间使用空行分开。

规则2-1-4】在一个函数体内,逻辑上密切相关的语句之间不加空行,其它地方应加空行分隔。参见示例2-1(b)。

示例2-1(a) 函数之间的空行示例2-1(b) 函数内部的空行。

规则2-2-1】一行**只做一件事情,如只定义一个变量,或只写一条语句。这样的**容易阅读,并且方便写注释。

规则2-2-2】if、for、while、do 等语句自占一行,执行语句不得紧跟其后。不论执行语句有多少都要加{}表明是一个语句块。

规则2-2-3】一对花括号要单独各占一行。但是在do-while、struct和union及其后有‘;’的除外,要同在一行。

例如:规则2-2-4】switch语句中的每个case语句各占一行,当某个case语句不需要break语句最好加注释声明。

规则2-2-5】并列的语句行应该按照字母顺序排序,如变量定义和switch中的case语句等。

建议2-2-1】尽可能在定义变量的同时初始化该变量(就近原则),如果变量的引用处和其定义处相隔较远,变量的初始化很容易被忘记。如果引用了未被初始化的变量,可能会导致程序错误。本建议可以减少隐患。

例如:int width=20; /定义并初绐化width*/

int height=20; /定义并初绐化height*/

int depth=20; /定义并初绐化depth*/

c语言经典案例

1 用筛选法求100之内的素数。include void main int num 100 i,j for i 0 i 100 i num i 1 for i 2 i 10 i for j 2 i j 100 j num i j 1 0 printf 0至100内素数有 for i j 0 i 10...

C语言知识3章

c语言试题库 第 章 一 选择题。1 一个c程序由若干个c函数组成,各个函数在文件中的位置为。a 任意。b 第一个函数必须是主函数,其他函数任意。c 必须完全按照顺序排列。d 其他函数必须在前,主函数必须在最后。2 下列四个叙述中,正确的是。a c程序中的所有字母都必须小写。b c程序中的关键字必须...

C语言程序经典例题

程序1 md c1 题目 有 个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?y y 1.程序分析 可填在百位 十位 个位的数字都是 组成所有的排列后再去er 掉不满足条件的排列。p 2.程序源 tj int i,j,k 1ti printf u for i 1 i 5 i h for ...

C语言格式输出函数printf

printf函数称为格式输出函数,其关键字最末一个字母f即为 格式 format 之意。其功能是按用户指定的格式,把指定的数据显示到显示器屏幕上。在前面的例题中我们已多次使用过这个函数。1.printf函数调用的一般形式。printf函数是一个标准库函数,它的函数原型在头文件 中。但作为一个特例,不...

C语言知识点总结

备注,这不是我们学校老师做的总结,所以里面有些地方说那个知识点是重点的不要完全相信,因为每个学校的侧重点不同,而且有些我们是没有学过的。希望这份东西对大家有用。明天就要考试了,看试题已经没有多大作用了,因为试题是看不完的,而且只要你巩固了基础,那出什么试题都不怕。6 算术运算符号的优先级别 同级别的...

B10,4c教师语言行为规范的基本要求

席郑小学规范小学教师的语言行为的要求。语言是人类交际的重要工具,是教师教育教学的基本手段,教师的工作主要通过语言行为来实现。如何正确运用这个工具,掌握与运用的好与差,直接影响到教师的工作效果。教师的语言行为规范要求语言的表达尽可能准确 贴切 完整,实现尽可能理想的语言效果。中小学教师所传授的知识大多...

C语言转换格式符大全

c 字符 d 十进制整数 e 浮点数,指数e的形式 s 字符串 e 浮点数,指数e的形式 u 无符号十进制整数 f 浮点数,小数点形式 g 输出 f与 e较短者 o 无符号八进制整数 g 输出 f与 e较短者 x 无符号十六进制整数,以0 f表示 x 无符号十六进制整数,以0 f表示 l 长整型,加...

C语言常用而经典的算法

一 基本算法交换 累加 累乘。二 非数值计算常用经典算法穷举 排序冒泡选择 查找顺序即线性 三 数值计算常用经典算法级数计算直接 简接即递推 一元非线性方程求根牛顿迭代法 二分法 定积分计算矩形法 梯形法 矩阵转置 四 其他迭代 进制转换 字符处理统计 数字串 字母大小写转换 加密等 整数各数位上数...