进行编码规范:
1、标准变量类型
禁止使用C语言的标准变量类型。
请使用共通头文件“aip_common.h”中定义了标准类型,如下:
#ifndef AIP_COMMON_H
#define AIP_COMMON_H
typedef unsigned char U1;
typedef unsigned short U2;
typedef unsigned int U4;
typedef long unsigned int U8;
typedef signed char S1;
typedef signed short S2;
typedef signed long S4;
typedef signed long long S8;
typedef U1* U1P;
typedef U2* U2P;
typedef U4* U4P;
typedef U8* U8P;
typedef S1* S1P;
typedef S2* S2P;
typedef S4* S4P;
typedef S8* S8P;
typedef void* VDP;
#define U1_MAX 0xFFU
#define U1_MIN 0x00U
#define S1_MAX 0x7F
#define S1_MIN 0x80
#define U2_MAX 0xFFFFU
#define U2_MIN 0x0000U
#define S2_MAX 0x7FFF
#define S2_MIN 0x8000
#define U4_MAX 0xFFFFFFFFUL
#define U4_MIN 0x00000000UL
#define S4_MAX 0x7FFFFFFFL
#define S4_MIN 0x80000000L
#define U8_MAX 0xFFFFFFFFFFFFFFFFULL
#define U8_MIN 0x0000000000000000ULL
#define S8_MAX 0x7FFFFFFFFFFFFFFFLL
#define S8_MIN 0x8000000000000000LL
#define TRUE 1
#define FALSE 0
#define ST struct
#define EN enum
#endif /* AIP_COMMON_H */
2、变量:
Format type [dt]_[s][a]_[module]_[variable];
Length of Identifier 最多32个字符
[dt]变量类型 标准类型 u1, u2, u4, u8, s1, s2, s4, s8
结构体类型 st
枚举类型 en
共用体类型 MISRA-C中禁止使用
函数指针类型 fp
变量指针类型 u1p, u2p, u4p, s1p, s2p, s4p, s8p, stp
空指针类型 vdp
[s]作用域 ※ 函数域内的自动变量 t
函数阈内的参数变量 a
文件阈内的static变量 s
文件域内外的extern变量 g
[a]数组 ※ 维数=0 无修饰字符
维数=1 p
维数=n p[n]
[module]模块名[variable]变量名
有const修饰 只能使用大写字母
无const修饰 只能使用小写字母
3、函数
Format type [dt]_[s]_[module][function]([parameter]….);
Length of Identifier 最多32个字节
[dt]返回值类型 标准类型 u1, u2, u4, u8, s1, s2, s4, s8
结构体类型 st
枚举类型 en
共用体类型 MISRA-C中禁止使用
变量指针类型 u1p, u2p, u4p, s1p, s2p, s4p, s8p, stp
空指针类型 vdp
[s]作用域 static函数仅在文件内 s
extern函数在文件内外 g
[module]模块名
[function]函数名 大小写字母均可使用
[parameter]形参名 3.3. 命名规则:遵从定义变量的命名格式
※:函数原型声明时,必须定义形参。
※函数内不会修改的参数,必须加上“const”修饰符。
4、注释必须是英文,不要使用“//”注释,不要跨行使用注释。在每一行,分别使用“/*”和“*/”来注释“/*”后面和“*/”的前面,插入空格
每个函数前面都要加注释,形如:
/*===================================================================================================================================*/
/* Function Name: v_g_SYMBOL_saveFile */
/* --------------------------------------------------------------------------------------------------------------------------------- */
/* Description: Saves user-defined symbol pairs to Symbol.txt file after validation */
/* Arguments: const U2 *u2p_g_FILE_folder_path_p : Folder path */
/* const U2 *u2p_a_SYMBOL_user_input : User input symbols */
/* Return: void */
/*===================================================================================================================================*/
5、{每个左大括号都要另起一行
6、所有判断语句,if while等只能是判断语句,不能嵌套函数
7、每个函数最多一个出口
8、返回值是一个变量,或者直接写一个值,不要写公式
9、结构体:
Format typedef struct{
[member]
…
}ST_[module]_[variable];
Length of Identifier 最多32个字符
[module]模块名
[variable]变量名
只能使用大写字母
[member] 成员名称需要按照3.3. 变量的规定。
禁止使用位域类型定义。
不过,Micro Controller Vendor提供的Micro-Controller的控制寄存器定义除外。
10、不要用常数,用魔法数字,如果是全是常数的公式,可以在宏里面定义
最新发布