我想知道在使用嵌入式代码从Simulink模型生成代码后是否可以避免MISRA警告10.1,13.2和12.6(或者是否可以生成具有解决方法的代码?)。
例如(生成的代码)
if (A)
{;}
如果(A)语句存在MISRA违规。
是否可以使用嵌入式编码器生成代码,如
if (A !=0)
{;}
答案 0 :(得分:0)
如果(A)没有使用布尔类型,我就很难生成这种类型的构造,在这种情况下没有违反规则13.2。
如果没有布尔类型,我会得到以下几点:
if(A> 1){ ...}
我正在使用R2015b版本。如果您可以共享生成此类代码的示例模型,那将是一件好事。
此外,根据MISRA AC AGC标准(MISRA-C:2004在自动代码生成环境中的应用指南),建议使用所有列出的规则(10.1,12.6,13.2),而不是强制性的。
因此,遵守这些规则取决于您的应用程序的重要性。
即使在最新的MISRA 2012标准中,这些规则已被重新分类,但在生成代码的背景下,它们仍被归类为咨询。
有关生成代码的MISRA合规性的一般信息,这是一个很好的参考:
http://www.mathworks.com/solutions/automotive/standards/misra-c.html
或
http://www.mathworks.com/solutions/aerospace-defense/standards/misra-c.html