[問題] 問一個MISRA-C RULE的解釋

作者: qeagle   2015-12-13 23:02:48
大家好
在MISRA的RULE14.7中提到
A function shall have a single point of exit at the end of the
function.
請問這是指在函式中只能有一個RETURN嗎?
不太能理解,因為我會RETURN 1 和RETURN -1
所謂的單一離開點倒底是指什麼?
作者: OPIV (Monitor)   2015-12-13 23:11:00
是以前 pascal 時代的理論吧if(...) flag = 1 else flag = -1; return flagif(...) return 1 else return -1;他們覺得第一種比較好…
作者: qeagle   2015-12-14 07:05:00
原來如此,要把RETURN值寫成變數就是了,謝謝
作者: Caesar08 (Caesar)   2015-12-14 10:43:00
http://goo.gl/XQN7T7的Non-issue: Multiple returns.Herb Sutter提出他對single-entry/single-exit的見解,SE/SE is an obsolete idea and has always been wrong.
作者: uranusjr (←這人是超級笨蛋)   2015-12-14 17:09:00
如果寫非常嚴格的 old-style C 那麼 single exit 可能有好處, 因為常常需要 cleanup, 退出點太多容易出 bug只有在 C++ 裡可以說這是 non-issue (因為有 RAII 模式)當然在 C 裡通常還是可以包成 function 來解

Links booklink

Contact Us: admin [ a t ] ucptt.com