gpt4 book ai didi

c - 违反 MISRA 规则 10.4

转载 作者:行者123 更新时间:2023-12-02 09:06:31 25 4
gpt4 key购买 nike

我收到下一个 MISRA 错误:规则 10.4 该等式运算符的操作数是不同“基本类型”类别( bool 型和无符号型)的表达式。代码如下所示:


#define TRUE (1!=0)
#define FALSE (0!=0)
typedef unsigned char boolean;


boolean active;
getActive(&active);

if (TRUE == active) <<<<<<<<<<<< HEre is the conflicting line
{

// DO Something
}

如果我删除 TRUE :


if (active)

出现 MISTA 规则 14.4:“控制表达式不是‘本质上 bool ’表达式”

所以我无法找出解决方案,

我看到使用

#define TRUE 1U
#define FALSE 0U

解决了这个问题,但恐怕我买不起这个解决方案,因为我使用的是来自第三方的大继承代码,使用 (1!=0) 表达式。我想这个表达式更加“智能”和可移植,因为在某些系统中 TRUE/FALSE 的含义可能会变为 0/1,但我想知道我是否可以保留:

#define TRUE (1!=0)
#define FALSE (0!=0)

并以处理 MISRA 问题的方式编写我的条件表达式

最佳答案

您的 MISRA 检查程序无法确定这些是您的 bool 类型。

如果您被 C90 困住了并且只有这样:您需要以某种方式通知您的工具您正在使用哪种自定义 bool 类型。否则它将无法判断这些宏的用途。

否则,只需使用stdbool.h。 2019 年几乎没有理由不这么做。

关于c - 违反 MISRA 规则 10.4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57660655/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com