控制語句體沒有使用括號封閉 ;
'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' 語句的控制範圍內,實際上它並不是。
程式設計規範修改舉例
NO
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' 語句)。
程式設計規範修改舉例
Rule 17.7 3200
3200 '%s' returns a value which is not being used.
函式宣告的返回型別為"non-void",但是函式呼叫後的返回值沒有用於賦值或檢查。
如果一個函式返回了一個值,那麼通常會以某種方式使用這個返回值。 如果確實打算忽略這個返回值,那麼通常把它強制轉換成'void'型別。如果這麼做的話就不會生成訊息3200。
程式設計規範修改舉例