Dir 1 执行情况
Dir1.1在编码过程中对所有输出的具体实现定义行为都要被记录和理解
必要性 | 适用范围 | 参考 |
---|---|---|
必选项 | C90 C99 | Rule 5.1, Rule 5.2 |
1.1.1 概述
标题看起来是不是很难以理解,英文原文是这么写的
Any implementation-defined behavior on which the output of the program depends shall be documented and understood
是不是一脸懵逼,我也是反复看了好几遍才明白了过来。翻译过来就是在编码的过程中的一些具体的实现行为需要被文档记录和理解;这里比较难懂的就是这个具体的实现行为。我们可以这么理解:就是在编码过程中遇到的有争议的行为,可能造成同一份代码出现不同效果的因素,即使它符合所有的MisraC规范。主要可以划分为以下几种类型的行为,这里提出一些示例,如果要看详细的行为可以参考MisraC 2012规范的附录G:
- 核心行为
- 例如:int类型的长度 - 扩展
- 例如:#progma的定义和使用 - 标准库
- 例如:获取时钟函数的实现 - 应用的二进制接口
- 例如:每个数据类型的对齐的实现(比如8位对齐还是32位对齐这类) - 整数除法
- 例如:C99和C90的整数除法中,操作数为负数时的处理 - 浮点运算的具体实现
- 例如:浮点数的精度
1.1.2 根本原因
那么为啥要设立这条规范呢?其实也容易理解,重要的是要知道程序这么运作和输出是有意的,而不是偶然产生了。就是要让所有的程序动作都能被程序员所理解,让我们的箱子白化。对嵌入式程序而言,这点尤为重要
附:返回总目录的传送门如下
->返回总目录<-