MISRA C指导指南解读系列3(MISRA C规则11-19)
2009-04-21 16:43
375 查看
2.1. 标识符
11.标识符不能依赖于多于31个字符的意义。编译器和链接器应该可以支持31个字符的外部标识符(R)12.不同域名空间的标识符的名称应该具有不同的拼写,结构体成员除外(A)
2.2. 类型
13.基本的类型,char,int,short,long,double,和float不应该被使用。应该使用编译器通过typedef定义的等价规定长度类型的名称(A)14.char类型应该声明成unsigned char 或者是signed char(R)
char类型会根据不同的编译器被默认为unsigned char 或 signed char
15.浮点类型的使用应该遵循明确的浮点标准(A)
16.程序员不能使用任何潜在的位表示的浮点数(R)
例如在IEEE754中:
typedef struct {
unsigned int mantissa1;
unsigned int mantissa0:31;
unsigned int one:1;
unsigned int exponent:15;
unsigned int negative:1;
unsigned int empty:16;
} _longDouble; // 80 bits intel long double
typedef struct {
unsigned int mantissa1;
unsigned int mantissa0:20;
unsigned int exponent:11;
unsigned int sign:1;
} _Double; // 64 bit double
typedef struct {
unsigned int mantissa:23;
unsigned int exponent:8;
unsigned int sign:1;
} _Float; // 32 bit float
以及浮点向整型数的类型转换。
17.采用typedef的名字不能被其它标识符使用(R)
例如:
typedef char mychar;
void mycall() {
char mychar; /* 与规则17发生冲突*/
}
2.3. 常数
18.数值常数应该添加后缀以表明类型(A)void mycall()
{
unsigned long a = 65537; /* 与规则18冲突 */
unsigned long b = 65537UL; /* 可以 */
return;
}
19.八进制常数不运行使用,零是可以的(R)
void myCall() {
int code1= 07; /*与规则19冲突*/
int code2= 7; /*可以*/
int code3 = 00; /*可以*/
}
相关文章推荐
- MISRA C指导指南解读系列5(MISRA C规则33-45)
- MISRA C指导指南解读系列10(MISRA C规则114-127)
- MISRA C指导指南解读系列6(MISRA C规则46-67)
- MISRA C指导指南解读系列8(MISRA C规则87-100)
- MISRA C指导指南解读系列9(MISRA C规则101-113)
- MISRA C指导指南解读系列2(MISRA 规则 1- 10)
- MISRA C指导指南解读系列4(MISRA C规则20-32)
- MISRA C指导指南解读系列7(MISRA C规则68-86)
- MISRA C指导指南解读系列1(MISRA C是什么)
- 交互设计实用指南系列(11)—减少记忆负担
- 交互设计实用指南系列(11)―减少记忆负担
- Informix IDS 11系统治理(918考试)认证指南,第 7 部分: IDS复制(19)
- 深入Atlas系列:客户端代码编写规则分析与指南
- Google C++Style Guide【C++编程风格指南解读】——规则的根本目标
- Google C++Style Guide【C++编程风格指南解读】——Windows代码规则
- DBA_实践指南系列11_Oracle Erp R12性能调优基础(案例)
- 解读ASP.NET 5 & MVC6系列(11):Routing路由
- Yii框架官方系列指南系列11——基础知识:模块
- Yii框架官方指南系列19——使用表单:创建表单
- 解读ASP.NET 5 & MVC6系列教程(11):Routing路由