没有合适的资源?快使用搜索试试~ 我知道了~
首页C语言编码规范汇总篇.pdf
资源详情
资源评论
资源推荐

C 语言编码规范汇总篇
版权声明:本文为 RootCode 博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链
接和本声明。本文链接:https://blog.csdn.net/RootCode/article/details/99734535
C 语言编码规范 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、在引用头文件时,不要使用绝对路径。如果使用绝对路径,当需要移动目录时,必须修改所有
相关代码,繁琐且不安全;使用相对路径,当需要移动目录时,只需修改编译器的某个选项即可。
例如:
#include “/project/inc/hello.h” /* 不应使用绝对路径 */
#include “../inc/hello.h” /* 可以使用相对路径 */
8、在引用头文件时,使用 <> 来引用预定义或者特定目录的头文件,使用 “” 来引用当前目录或者
路径相对于当前目录的头文件。
#include <stdio.h> /* 标准头文件 */
#include <projdefs.h> /* 工程指定目录头文件 */
#include “global.h” /* 当前目录头文件 */
#include “inc/config.h” /* 路径相对于当前目录的头文件 */
9、为了防止头文件被重复引用,应当用 ifndef/define/endif 结构产生预处理块。
#ifndef __DISP_H /* 文件名前名加两个下划线“__”,后面加 “_H”
#define __DISP_H
...
...
#endif
10、头文件中只存放“声明”而不存放“定义”,通过这种方式可以避免重复定义。
/* 模块 1 头文件: module1.h */
extern int a = 5; /* 在模块 1 的 .h 文件中声明变量 */
/* 模块 1 实现文件:module1.c */
uint8_t g_ucPara; /* 在模块 1 的 .h 文件中定义全局变量 g_ucPara */
11、如果其它模块需要引用全局变量 g_ucPara, 只需要在文件开头包含 module1.h
/* 模块 2 实现文件:module2.c */
#include “module1.h” /* 在模块 2 中包含模块 1 的 .h 文件 */
......
g_ucPara = 0;
......
12、对于文件的长度没有非常严格的要求,但应尽量避免文件过长。一般来说,文件长度应尽量保
持在 1000 行之内。

C 语言编码规范 2--排版
1、程序块要采用缩进风格编写,缩进的空格数为 4 个。
2、相对独立的程序块之间、变量说明之后必须加空行。
void DemoFunc(void)
{
uint8_t i;
//<---- 局部变量和语句间空一行
/* 功能块 1 */
for (i = 0; i < 10; i++)
{
//...
}
//<---- 不同的功能块间空一行
/* 功能块 2 */
for (i = 0; i < 20; i++)
{
//...
}
}
3、作符处划分新行,操作符放在新行之首,划分出的新行要进行适当的缩进,使排版整齐,语句可读。
if ((ucParam1 == 0) && (ucParam2 == 0) && (ucParam3 == 0)
|| (ucParam4 == 0)) //< ---- 长表达式需要换行书写
{
//......
}
4、不允许把多个短语句写在一行中,即一行只写一条语句。
rect.length = 0; rect.width = 0; //<---- 不正确的写法
rect.length = 0; //<---- 正确的写法
rect.width = 0;

5、对齐使用 TAB 键,1 个 TAB 对应 4 个字符位。
6、函数或过程的开始、结构的定义及循环、判断等语句中的代码都要采用缩进风格,case 语句下的情况处理语句
也要遵从语句缩进要求。
7、程序块的分界符(如大括号‘{’和‘}’ )应各独占一行并且位于同一列,同时与引用它们的语句左对齐。在函数
体的开始、类的定义、结构的定义、枚举的定义以及 if、for、do、while、switch、case 语句中的程序都要采用
如上的缩进方式。对于与规则不一致的现存代码,应优先保证同一模块中的风格一致性。
for (...) { <---- 不规范的写法
//... /* program code */
}
for (...)
{ <---- 规范的写法
//... /* program code */
}
if (...){ <---- 不规范的写法
//... /* program code */
}
if (...)
{ <---- 规范的写法
//... /* program code */
}
8、在两个以上的关键字、变量、常量进行对等操作时,它们之间的操作符之前、之后或者前后要加空格;进行非
对等操作时,如果是关系密切的立即操作符(如->),后不应加空格。
说明:采用这种松散方式编写代码的目的是使代码更加清晰。
由于留空格所产生的清晰性是相对的,所以,在已经非常清晰的语句中没有必要再留空格,如果语句已足
够清晰则括号内侧(即左括号后面和右括号前面)不需要加空格,多重括号间不必加空格,因为在 C 语言中括
号已经是最清晰的标志了。
在长语句中,如果需要加的空格非常多,那么应该保持整体清晰,而在局部不加空格。给操作符留空格时
不要连续留两个以上空格。
示例:
(1)逗号、分号只在后面加空格。
int_32 a, b, c;
剩余15页未读,继续阅读













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

评论1