为什么Polyspace报告“MISRA - C: 2012 10.3和10.4”

30视图(30天)
在C项目我有一个“无符号字符BOOL类型;和真假声明为BOOL”和在一个函数中参数指针指向一个BOOL,我做赋值* Pointer_To_BOOL = true / false得到“MISRA - C: 2012 10.3(必需)一个表达式的值不得分配给一个对象具有窄的基本类型或不同的基本类型的类别。表达式分配给一个对象使用不同的基本类型类别。”And also get "MISRA C:2012 10.4 (Required) Both operands of an operator in which the usual arithmetic conversions are performed shall have the same essential type category. The left operand of the == operator has essentially unsigned type while the right operand has essentially Boolean type." where I check *Poiter_To_BOOL against TRUE/FALSE. Why does Polyspace take an parameter *Pointer_To_BOOL as unsigned char and what can I do to stop getting this warnings (refactor/justify).
谢谢你,克里斯蒂安·PASCALAU
3评论
洛伦兹门迪人
洛伦兹门迪人 2017年6月23日
嗨,基督徒,你已经设置与您的特定BOOL boolean类型?如果你所做的和使用R2016b或更低,比可能有相关的机会,这是一个缺陷,它在R2017a是固定的。
如果一个更新是不可能的,你可能会证明这些代码- >看到章违反“添加评论评论代码”文档。它工作得很好,我们的审查过程是有理由由doxygen发现另外发表评论。

登录置评。

接受的答案

Anirban
Anirban 2022年5月23日
R2021a以来,跳棋10。x治疗宏如真假决心1和0是布尔值。看到 Polyspace发布说明

答案(1)

沃尔特·罗伯森
沃尔特·罗伯森 2016年11月28日
“为什么Polyspace带一个参数* Pointer_To_BOOL unsigned char”
因为你BOOL定义为无符号字符。你考虑一个指针无符号字符结果是无符号字符
4评论

登录置评。


翻译的