在结构体或联合体中,若位域所采用的类型并非 int、signed int 或 unsigned int,则该声明不符合标准规范。

1、 规则与检测等级的映射关系(QAC)

MISRA C规则6.1与7.2解析

2、 若在 struct 或 union 中定义位域时使用了除 int、signed int 和 unsigned int 以外的类型,则视为非法声明。

3、 根据 ISO/IEC 9899:C 标准规定,位域仅允许使用若干限定的基本整型进行定义。

4、 某些编译器虽支持以 char、short 或枚举类型(enum)作为位域类型,但此类特性属于非标准扩展,无法保证跨平台兼容性。

5、 在同一 struct 或 union 声明中,即使存在多个违反标准的位域定义,警告信息 0635 也仅报告一次。

MISRA C规则6.1与7.2解析

6、 编码规范优化示例

MISRA C规则6.1与7.2解析

7、 规则与检查等级的对应关系(QAC)

MISRA C规则6.1与7.2解析

8、 无符号整数常量未添加 U 后缀进行显式标识。

9、 整型字面量的具体类型取决于其数值范围、目标平台下 int 的宽度(例如 16 位或 32 位),以及是否带有类型后缀。

10、 官方参考示例

MISRA C规则6.1与7.2解析

11、 编码规范修正示例

MISRA C规则6.1与7.2解析

本文转载于:https://soft.zol.com.cn/1155/11555540.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。