没有合适的资源?快使用搜索试试~ 我知道了~
首页安富莱C语言编码规范.pdf
安富莱C语言编码规范.pdf
需积分: 50 452 浏览量
更新于2023-06-05
评论 1
收藏 895KB PDF 举报
c语言编写规范一直受到大家的重视。但是在本人刚开始学c时一直不知道该遵循哪些规则,软件写的比较随意,之后随着深入了解到了一些规范。本文是在看到安富莱电子论坛的规范之后,决定整理成文档,供自己之后查阅。
资源详情
资源评论
资源推荐

1--文件与目录
2--排版
3--注释
4--可读性
5--变量、结构、常量、宏
6--函数
1
--
文件与目录
1、文件及目录的命名规定可用的字符集是[A-Z;a-z;0-9;._-]。
2、源文件名后缀用小写字母.c和.h。
3、文件的命名要准确清晰地表达其内容,同时文件名应该精练,防止文件名过
长而造成使用不便。在文件名中可以适当地使用缩写。
以
下
提
供
两
种
命名
方
式
以供
参
考
:
(1)各程序模块的文件命名开头2个消协字母代表本模块的功能:
如:主控程序为mpMain.c,mpDisp.c…
(2)不写模块功能标识:
如:主控程序为Main.c,Disp.c…
4、一个软件包或一个逻辑组件的所有头文件和源文件建议放在一个单独的目录
下,这样有利于查找并使用相关的文件,有利于简化一些编译工具的设置。

5、对于整个项目需要的公共头文件,应存放在一个单独的目录下(例如:
myProject/include)下,可避免其他编写人引用时目录太过分散的问题。
6、对于源码文件中的段落安排,我们建议按如下的顺序排列:
a.文件头注释
b.防止重复引用头文件的设置
c.#include部分
d.#define部分
e.enum常量声明
f.类型声明和定义,包括struct、union、typedef等
g.全局变量声明
h.文件级变量声明
i.全局或文件级函数声明
j.函数实现。按函数声明的顺序排列
k.文件尾注释
7、在引用头文件时,不要使用绝对路径。如果使用绝对路径,当需要移动目录
时,必须修改所有相关代码,繁琐且不安全;使用相对路径,当需要移动目录
时,只需修改编译器的某个选项即可。
例如:
1 #include“/project/inc/hello.h”/*不应使用绝对路径*/
2 #include“../inc/hello.h”/*可以使用相对路径*/
8、在引用头文件时,使用<>来引用预定义或者特定目录的头文件,使用“”
来引用当前目录或者路径相对于当前目录的头文件。
1 #include<stdio.h>/*标准头文件*/
2 #include<projdefs.h>/*工程指定目录头文件*/
3 #include“global.h”/*当前目录头文件*/
4 #include“inc/config.h”/*路径相对于当前目录的头文件*/

9、为了防止头文件被重复引用,应当用ifndef/define/endif结构产生预处理
块。
1 #ifndef__DISP_H/*文件名前名加两个下划线“__”,后面加“_H”
2 #define__DISP_H
3 ...
4 ...
5 #endif
6
10、头文件中只存放“声明”而不存放“定义”,通过这种方式可以避免重复
定义。
1 /*模块1头文件:module1.h*/
2 externinta=5;/*在模块1的.h文件中声明变量*/
1 /*模块1实现文件:module1.c*/
2 uint8_tg_ucPara;/*在模块1的.h文件中定义全局变量g_ucPara*/
11、如果其它模块需要引用全局变量g_ucPara,只需要在文件开头包含
module1.h
1 /*模块2实现文件:module2.c*/
2 #include“module1.h”/*在模块2中包含模块1的.h文件*/
3 ......
4 g_ucPara=0;
5 ......
12、对于文件的长度没有非常严格的要求,但应尽量避免文件过长。一般来
说,文件长度应尽量保持在1000行之内。
2--排版
1、程序块要采用缩进风格编写,缩进的空格数为4个。

2、相对独立的程序块之间、变量说明之后必须加空行。
1 voidDemoFunc(void)
2
3 {
4
5 uint8_ti;
6
7 <‐‐‐‐局部变量和语句间空一行
8
9 /*功能块1*/
10
11 for(i=0;i<10;i++)
12
13 {
14
15 ...
16
17 }
18
19 <‐‐‐‐不同的功能块间空一行
20
21 /*功能块2*/
22
23 for(i=0;i<20;i++)
24
25 {
26
27 ...
28
29 }
30
31 }
3、作符处划分新行,操作符放在新行之首,划分出的新行要进行适当的缩进,
使排版整齐,语句可读。
1 if((ucParam1==0)&&(ucParam2==0)&&(ucParam3==0)
2
3 ||(ucParam4==0))<‐‐‐‐长表达式需要换行书写
4

5 {
6
7 ......
8
9 }
4、不允许把多个短语句写在一行中,即一行只写一条语句。
1 rect.length=0;rect.width=0;<‐‐‐‐不正确的写法
2
3 rect.length=0;<‐‐‐‐正确的写法
4
5 rect.width=0;
6
5、对齐使用TAB键,1个TAB对应4个字符位。
6、函数或过程的开始、结构的定义及循环、判断等语句中的代码都要采用缩进
风格,case语句下的情况处理语句也要遵从语句缩进要求。
7、程序块的分界符(如大括号‘{’和‘}’)应各独占一行并且位于同一列,
同时与引用它们的语句左对齐。在函数体的开始、类的定义、结构的定义、枚举
的定义以及if、for、do、while、switch、case语句中的程序都要采用如上
的缩进方式。对于与规则不一致的现存代码,应优先保证同一模块中的风格一致
性。
1 for(...){<‐‐‐‐不规范的写法
2
3 .../*programcode*/
4
5 }
6
7 for(...)
8
9 {<‐‐‐‐规范的写法
10
11 .../*programcode*/
12
剩余22页未读,继续阅读












安全验证
文档复制为VIP权益,开通VIP直接复制

评论0