MISRA C-2012准则之常量
目录
一、MISRA C简介
二、常量
1. 不要使用八进制常量
2. 无符号类型常量未加后缀
3. 使用小写 ‘l’ 作为后缀
4. 字符串赋给非字符常量指针的对象
相关文章如下:
1、《MISRA C-2012准则之标准C环境准则》
2、《MISRA C-2012准则之未使用的代码的处理》
3、《MISRA C-2012准则之注释》
4、《MISRA C-2012准则之标识符》
5、《MISRA C-2012准则之常量》
6、《MISRA C-2012准则之声明与定义》
一、MISRA C简介
MISRA C是由汽车产业软件可靠性协会(MISRA)提出的C语言开发标准。其目的是在增进嵌入式系统的安全性及可移植性。
MISRA C一开始主要是针对汽车产业,不过其它产业也逐渐开始使用MISRA C:包括航天、电信、 国防、医疗设备、铁路等领域中都已有厂商使用MISRA C。
MISRA C的第一版是在1998年发行,一般称为MISRA-C:1998。在2004年时发行了第二版的MISRA C,称作MISRA-C:2004。2012年发布第三版,为当前最新有效的C语言规范版本,称为MISRA-C:2012。 MISRA C不能100%保证程序不出问题,但是能尽可能的预防,总结一下,基本上使用MISRA C具有以下五个维度的优势:
1、提升可靠性
2、提升可读性
3、提升可移植性
4、提升可维护性
5、提升安全性
二、常量
必需。不要使用八进制常量。
必需。所有以无符号类型表示的整型常量都应加上'u'或'U'后缀。
必需。小写字母'l'不应用于文字后缀。
必需。除非对象类型是指向字符常量的指针,否则字符串不应赋给对象。
1. 不要使用八进制常量
#include <stdio.h>int main() {int octalValue = 077; // 错误:使用了八进制常量printf("Octal value: %d\n", octalValue);return 0;
}
2. 无符号类型常量未加后缀
#include <stdio.h>int main() {unsigned int uValue = 42; // 错误:未加 'u' 或 'U' 后缀printf("Unsigned value: %u\n", uValue);return 0;
}
3. 使用小写 ‘l’ 作为后缀
#include <stdio.h>int main() {long longValue = 123l; // 错误:使用了小写 'l' 作为后缀printf("Long value: %ld\n", longValue);return 0;
}
4. 字符串赋给非字符常量指针的对象
#include <stdio.h>int main() {char str[10] = "Hello"; // 错误:字符串字面量赋给字符数组printf("%s\n", str);return 0;
}