违反MISRA C-2012规则10.3?

voase2hg  于 2023-05-16  发布在  其他
关注(0)|答案(1)|浏览(167)

当我尝试添加这些宏时:

#define BOOT_VD_TRUE  ((uint8_t)(0x00U))
#define BOOT_VD_FALSE ((uint8_t)(0x01U))

它违反了MISRA C-2012规则10.3:Implicit conversion of (uint8_t)1U from essential type "boolean" to different or narrower essential type "unsigned 8-bit int" .
我尝试删除类型转换,但它仍然认为0和1是布尔值而不是整数。
功能定义如下:

uint8_t bootInitFlag(uint8_t Val) 
{ 
   uint8_t bootFlag = Val;
   // Doing something
}

bootInitFlag(BOOT_VD_TRUE);
j5fpnvbx

j5fpnvbx1#

为了让任何MISRA检查器按预期工作,它需要知道你的布尔类型是什么。通常它们是booltruefalse,除非你被古老的C90卡住了。在这种情况下,您需要主动告诉工具您的布尔类型是什么,否则它无法知道。
一个工具,* 假设 * 你的一些类型本质上是布尔的基础上命名是坏的。Bug报告它。

相关问题