- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我公司的项目中,AUTOSAR 平台定义了这样的 bool 值
typedef unsigned char boolean;
加
#ifndef TRUE
#define TRUE 1
#endif
#ifndef FALSE
#define FALSE 0
#endif
这是不可修改的。然后我们得到 MISRA 10.3 错误
分配给更窄或不同的基本类型的表达式 [MISRA 2012 规则 10.3,必需] 在以下两个作业中(当然替换了真实代码!)
boolean mybool = (boolean)FALSE;
if(some_condition)
{
mybool = (boolean)TRUE;
}
我们已经尝试使用
(uint8)FALSE
进行其他转换或
(unsigned char)FALSE
甚至没有转换
mybool = TRUE;
没有解决问题。我们很乐意避免为偏差辩护。
.c
并在 native 上运行 PC-Lint/MISRA
#define testTRUE 1U
boolean x = testTRUE;
boolean y = (uint8)testTRUE;
boolean z = (boolean)testTRUE;
#define testTRUE_2 1
boolean x_2 = testTRUE_2;
boolean y_2 = (uint8)testTRUE_2;
boolean z_2 = (boolean)testTRUE_2;
unsigned char x_3 = (boolean)1;
unsigned char y_3 = (boolean)testTRUE;
unsigned char z_3 = (boolean)testTRUE_2;
并在前 6 个作业中遇到同样的问题。对于最后 3 个分配,错误没有出现,但可能被替换为这个错误:
在 typedef [MISRA 2012 指令 4.6,建议] 之外使用修饰符或类型“无符号”
最佳答案
MISRA-C 和 bool 值的问题在于 MISRA 鼓励我们“假装”语言中存在 bool 类型,并将例如关系运算符和相等运算符的结果视为“本质上是 bool 值”。
也就是说,像 C++ 一样对待 bool 类型。 C 确实在 C99 中引入了 bool 值,但上述运算符的结果仍然是 int
,不是 bool
就像在 C++ 中一样。但是 MISRA 想让我们“假装”它们是 bool 值,以确保代码正确。此外,MISRA-C 还涵盖了没有标准的 C90 bool
/true
/false
被拥有。
因此,为了让 bool 值像 MISRA 想要的那样工作,您需要一种方法来告诉您的静态分析器 boolean
, TRUE
和 FALSE
是你的 bool 类型。否则该工具会将它们视为 int
然后您会收到各种隐式转换警告。我不知道如何在 PC-Lint 上执行此操作,但错误是工具配置问题。
至于贴出的代码,boolean mybool = FALSE;
是 MISRA 兼容的,因为这是“本质上是 bool 型”类型。没必要投。如果您没有配置该工具,则没有任何类型转换可以拯救您。通常,除非您知道为什么要这样做,否则永远不要使用 C 进行转换。
关于c - 关于 AUTOSAR bool 值的 MISRA 10.3 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65010779/
引入自适应 Autosar 的主要动机是什么? Information provided by Autosar consortium is "AP provides mainly high-perfo
在为新板开发 MCAL 层时,是否允许添加 AUTOSAR 规范中未指定的新功能?例如添加到 MCAL ICU 测量帧长度的功能(MCU 中有一个专用模块测量输入帧 LEVEL 的长度) 最佳答案 A
我是 AUTOSAR 的新手,我试图了解如何记录 DTC,但我对老化和去抖动计数器感到困惑。请帮助我了解 DTC 是如何记录的? 最佳答案 Dem 模块提供了两项(除其他外)重要服务来记录 DTC 的
在 AUTOSAR 规范的许多框图中,他们使用术语 PduR。 但是AUTOSAR Schema中没有这样的模块。 谁能解释一下 PduR 是什么意思? 最佳答案 PduR 是“Pdu 路由器”的缩写
我一直在阅读有关开发 Autosar 软件组件的信息。我仍然对内部行为的 WaitPoint 和 Event 感到困惑。 AUTOSAR 软件组件中的 WaitPoint 和 Event 之间的主要区
兼容AUTOSAR的系统最多支持多少个任务? 在Linux中,我可以检查支持的最大进程ID,以获取支持的最大任务数。 但是,我找不到任何资料说明AUTOSAR支持的最大任务数。 非常感谢您的帮助! 最
是否可以根据其 website 上提供的规范开发 AUTOSAR BSW 堆栈(例如用于 CAN 通信)?不购买任何昂贵的供应商工具?可以遵循哪些步骤?我被要求探索这种可能性。 最佳答案 是和否。工具
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
我是 AUTOSAR 的新手。目前我正在寻找 AUTOSAR 项目中使用的不同类型的测试。我的目标是获得有关 AUTOSAR 测试领域的知识。以下是我希望得到解答的问题。1. AUTOSAR 有哪些不
我是自适应 AUTOSAR 的菜鸟。 我无法想象为什么需要时间同步(Tysnc)。 ECU的系统时间可以通过PTP同步。 你能解释为什么即使 PTP 跨分布式系统同步时间也需要 Tsync 吗?或者我
自适应 AUTOSAR 基于什么 POSIX PSE51? 在学习自适应 AUTOSAR 时,我发现“自适应 AUTOSAR 基于 POSIX PSE51”。 但是,我不明白什么是 POSIX PSE
我正在 STM32 NUCLEO-F767ZI 板上的 AUTOSAR 项目中工作,我必须在 DIO 模块中写入端口的值。我知道有一个名为 HAL_GPIO_WritePin() 的函数,但是我怎样才
MCAL 模块(例如 Lin diver、CAN 驱动程序)应包含哪些 .c 和 .h 文件?每个文件都包含什么内容?如何为它们派生配置? 最佳答案 Autosar 并未完全指定这一点。该标准在涉及实
如何从 Runnable 内部确定 c 中 PIM(每实例内存)的大小(无需在生成的 RTE 中查找并添加固定值)? 情况:Runnable Foo 可以访问两个 PIM Pim1 和 Pim2。在示
在我公司的项目中,AUTOSAR 平台定义了这样的 bool 值 typedef unsigned char boolean; 加 #ifndef TRUE #define TRUE 1 #endif
在 Autosar 中,每个通信模块(例如,Can、Lin、Eth)都包含 _type.h 和 _GeneralTypes.h 头文件。 这些头文件包含什么? 这两个头文件有什么区别? 为什么以这种方
我是一名优秀的程序员,十分优秀!