一、MISRA-C是什么?
简而言之,MISRA-C是一种c语言编程规范,在笔者所在的汽车领域,嵌入式领域十分普及。其旨在提高代码可读性、可靠性和可移植性等。
以下主要记录MISRC-A 2004版中的6.1部分的内容。
二、环境
1.规则1.1(必须)
所有代码必须符合ISO/IEC 9899:1990“编程语言 — C”标准,由ISO/IEC 9899/COR1:1995、ISO/IEC 9899/AMD1:1995和ISO/IEC 9899/COR2:1996修订和更正。
#include <stdio.h>
int main(void){
printf("Hello,World\n");
return 0;
}
2.规则1.2(必须)
不得依赖未定义或未指定的行为。 此规则要求避免对未定义和未指定行为的任何依赖,除非其他规则明确涵盖了特定行为。当特定行为在另一条规则中明确涵盖时,只有需要偏离该特定规则。
错误示例:
int x;
printf("%d\n",x);
正确示例:
int x = 0;
printf("%d\n",x);
3.规则1.3(必须)
仅当存在对象代码的通用定义接口标准时,才可以使用多个编译器和语言。如果要在C之外的语言中实现一个模块,或者在不同的C编译器上编译一个模块,那么必须确保该模块能够与其他模块正确集成。
4.规则1.4(必须)
编译器/链接器应该被检查以确保支持外部标识符的31个字符的显著性和区分大小写。
/* 符合规则的标识符*/
void function_name_with_31_characters(void) {} /*遵守命名约定有助于避免冲突*/
#define MY_CONSTANT_NAME 123
5.规则1.5(建议)
浮点实现应符合定义的浮点标准。浮点算术有一系列与之相关的问题,可以通过使用符合公认标准的实现来克服,如ANSI/IEEE Std 754。
总结
在活跃的汽车领域中,不同开发人员的开发习惯不尽相同。良好的开发习惯不仅让自己看自己开发的代码赏心悦目,也能更好地与同事协同。