当我尝试添加这些宏时:
#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);
1条答案
按热度按时间j5fpnvbx1#
为了让任何MISRA检查器按预期工作,它需要知道你的布尔类型是什么。通常它们是
bool
,true
,false
,除非你被古老的C90卡住了。在这种情况下,您需要主动告诉工具您的布尔类型是什么,否则它无法知道。一个工具,* 假设 * 你的一些类型本质上是布尔的基础上命名是坏的。Bug报告它。