目 次
前 言
为提高产品代码质量,指导嵌入式软件开发人员编写出简洁、可维护、可靠、可测试、高效、可移植的代码,避开危险的编程方式,编写了本规范。
本标准由XX公司 XX部提出。
本标准由XX公司 XX部归口。
本标准起草单位:
本标准主要起草人:
本标准主要修改人:
参考《MISRA 2004编码规则》。
编制 |
校对 |
审核 |
标准 |
批准 |
批准日期 |
XX |
XX |
嵌入式编程手写C代码编码规范
1 规范制定说明
本规范制定的意义在于提高代码的可读性,使代码标准化,为代码的集成、测试、维护、审查提供便利。
本规范作用在于约束代码编写规则,宗旨是使得代码简洁明了,可读性及可移植性强、易于维护。
本规范给出嵌入式软件C语言编码格式要求,并从排版要求、注释要求、命名规则、变量常量宏定义及类型、初始化、声明及定义、控制语句与表达式等方面详细给出编码规则,便于C语言编码人员及代码静态测试人员使用。
2 适用范围
本规范适用于XX公司嵌入式编程手写C代码开发,如VCU控制器手写代码部分的开发。
3 基本原则
1)代码简洁、语句清晰,风格统一。
2)注释清晰明了,便于阅读。
3)代码结构清晰,可读性强,便于维护与测试。
4)模块化编程,尽量少用全局变量,避免使用GOTO语句。
5)通俗易懂不产生歧义。
4 组织构成及排版要求
4.1组织构成及包含内容
嵌入式代码源代码中包含头文件(.h)及源文件(.c),包含的内容为:
1)头文件:文件头说明、提供给外部参考的类型、常量、宏定义、(全局)函数声明、全局变量的原型声明,不要定义变量。
2)源文件:文件头说明、函数头说明、只在本文件中使用的类型、常量、宏定义及全局变量和文件级(static)变量定义。
4.2 文件书写的层次
1)实现文件(.C文件)的层次:
文件头
#include (依次为标准库头文件,非标准库头文件)
文件内部常量定义
文件内部宏定义
文件内部数据类型
文件内部静态全局变量
函数原型定义
2)声明文件(.H文件)的层次:
文件头
#ifndef _文件名_H (全大写)
#define _文件名_H (全大写)
其他条件编译选项
#include (依次为标准库头文件,非标准库头文件)
全局常量声明
全局宏声明
全局数据类型声明
全局变量声明
外部引用
全局函数原型声明
#endif /* _文件名_H */
注意事项:
- 头文件尽量通过宏定义避免重复包含。
- 包含标准库头文件使用尖括号“<>”,包含非标准库头文件使用双引号“” ””。
4.3 排版要求
- 程序块采用缩进风格编写,缩进的空格数为4个,缩进采用空格键,不使用tab键。
- 相对独立的程序块之间、变量说明后必须加空行。
- 代码行不宜过长,较长的语句(>80字符)要分成多行书写,长表达式要在低优先级操作符处划分新行,操作符放在新行之首,划分出的新行要进行适当的缩进,使排版整齐,语句可读。
eg:act_task_table[taskno].duration_true_or_false
= SYS_get_sccp_statistic_state( stat_item );
- 若函数或过程中的参数较长,则要进行适当的划分。函数调用和函数声明续行在第一个参数处对齐,类型与名称不能分行书写。
eg: