MISRA C Rule 15.6 2212 15.7 2004 17.7 3200

2025-11-04 12:17:15

控制语句体没有使用括号封闭 ;

'if'­'else'­'if' 结构后面没有'else' ;

函数的返回值没有被使用 。

工具/原料

Rule 15.6 2212 15.7 2004 17.7 3200

MISRA C:2012

Rule 15.6 2212

2212 Body of control statement is not enclosed within braces. 

这个 'if'、'for'、'while'、'do while'语句的块体不是一个 复合语句 ,例如,它没有使用大括号来封闭。 

虽然使用这种方式写代码是完全合法的,但是这样可能会存在一些潜在的危险。 没有括号的情况下,控制语句的块体就仅仅只能是单个语句了;但是,这样会使得后面的代码很容易被误解。

下面的例子可以看出不好的布局如何让人产生危险的错觉:'++y' 语句似乎是在 'if' 语句的控制范围内,实际上它并不是。

MISRA C Rule 15.6 2212 15.7 2004 17.7 3200

编程规范修改举例

NO

MISRA C Rule 15.6 2212 15.7 2004 17.7 3200

Rule 15.7 2004

2004 No concluding 'else' exists in this 'if'-'else'-'if' statement. 

'if' ... 'else if' 结构后面没有'else'。 在许多编码标准中都不建议这样做。'else'对于逻辑完整性是很重要的。

注意:当一个 'if' 语句后面没有跟随一个 'else' 时, 不会生成消息2004,除非 这个 'if' 关键字前面直接有一个'else' (即 'else if' 语句)。

MISRA C Rule 15.6 2212 15.7 2004 17.7 3200

MISRA C Rule 15.6 2212 15.7 2004 17.7 3200

编程规范修改举例

MISRA C Rule 15.6 2212 15.7 2004 17.7 3200

Rule 17.7 3200

3200 '%s' returns a value which is not being used. 

函数声明的返回类型为"non-void",但是函数调用后的返回值没有用于赋值或检查。

如果一个函数返回了一个值,那么通常会以某种方式使用这个返回值。 如果确实打算忽略这个返回值,那么通常把它强制转换成'void'类型。如果这么做的话就不会生成消息3200。

MISRA C Rule 15.6 2212 15.7 2004 17.7 3200

编程规范修改举例

MISRA C Rule 15.6 2212 15.7 2004 17.7 3200

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢