我有一个关于如何解决 MISRA 2004 11.3 违规问题的问题。
代码如下:
tm_uint8 read( tm_uint8* data)
{
data[0] = *((tm_uint8*)0x00003DD2);
data[1] = *((tm_uint8*)0x00003DD3);
data[2] = *((tm_uint8*)0x00003DD4);
}
我想写入物理地址存储的值。它可以编译,但我违反了 11.3 的 MISRA 规定。我想解决它。有人能帮我吗?
该规则背后的基本原理是,MISRA 担心从整数转换为指针时访问未对齐。在你的情况下,我假设tm_uint8_t
是 1 个字节,因此对齐在这里不应该成为问题。在这种情况下,该警告只是误报,您可以忽略它。这是一条建议性规则,因此您无需提出偏差。
除了从不使用绝对地址之外,没有其他解决方法。这很可能不是这里的一个选择。可以看出,在编写与硬件相关的代码时,这条规则非常麻烦,这样的代码根本无法遵循该规则。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)