我无法在此行中解决米斯拉规则11.6警告:
uint32_t * delay = (uint32_t *)0x40086D0C ;
Run Code Online (Sandbox Code Playgroud)
[ 仅供参考: typedef long unsigned int uint32_t;]
PC-Lint:注释923:从int转换为指针[MISRA 2012 Rule 11.6,必填]
我做了什么:
您能否分享有关我的问题的有用想法?我们将不胜感激。
皮棉一如既往地破碎。提交错误报告或仅卸载Lint。
MISRA-C:2012规则11.6是关于从指针到void的转换为算术类型的指针!因此,“从int转换为指针[MISRA 2012规则11.6,必需]”是不正确的废话,与引用的规则无关,他们不正确地引用了该引用。
关于整数到指针的转换,有一个咨询规则11.4。该规则的目的是捕获这种类型的转换会导致指针对齐不正确的情况。但是,您可以忽略规则11.4,而不会引起偏差,因为它是建议性的。
因此,除了咨询规则外,您的代码还符合MISRA的要求,尽管您需要在整数常量后附加一个U后缀,以便确定其他规则:
uint32_t* delay = (uint32_t*)0x40086D0Cu ;
Run Code Online (Sandbox Code Playgroud)
并且指针最有可能是volatile uint32_t*为了使此代码有意义。