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

看板C_and_CPP作者時間10年前 (2015/12/13 23:02), 編輯推噓1(1011)
留言12則, 4人參與, 最新討論串1/1
大家好 在MISRA的RULE14.7中提到 A function shall have a single point of exit at the end of the function. 請問這是指在函式中只能有一個RETURN嗎? 不太能理解,因為我會RETURN 1 和RETURN -1 所謂的單一離開點倒底是指什麼? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.227.65.122 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1450018970.A.55A.html

12/13 23:11, , 1F
是以前 pascal 時代的理論吧
12/13 23:11, 1F

12/13 23:12, , 2F
if(...) flag = 1 else flag = -1; return flag
12/13 23:12, 2F

12/13 23:13, , 3F
if(...) return 1 else return -1;
12/13 23:13, 3F

12/13 23:14, , 4F
他們覺得第一種比較好…
12/13 23:14, 4F

12/14 07:05, , 5F
原來如此,要把RETURN值寫成變數就是了,謝謝
12/14 07:05, 5F

12/14 10:43, , 6F
http://goo.gl/XQN7T7的Non-issue: Multiple returns.
12/14 10:43, 6F

12/14 10:44, , 7F
Herb Sutter提出他對single-entry/single-exit的見解,
12/14 10:44, 7F

12/14 10:45, , 8F
SE/SE is an obsolete idea and has always been wrong.
12/14 10:45, 8F

12/14 17:09, , 9F
如果寫非常嚴格的 old-style C 那麼 single exit 可能有
12/14 17:09, 9F

12/14 17:10, , 10F
好處, 因為常常需要 cleanup, 退出點太多容易出 bug
12/14 17:10, 10F

12/14 17:11, , 11F
只有在 C++ 裡可以說這是 non-issue (因為有 RAII 模式)
12/14 17:11, 11F

12/14 17:13, , 12F
當然在 C 裡通常還是可以包成 function 來解
12/14 17:13, 12F
文章代碼(AID): #1MROYQLQ (C_and_CPP)