大家應該都滿常使用switch case的語法,
有時也會省略break關鍵字,讓多個case都進到同一段程式碼執行,
例如以下情境:
這樣編譯不會有問題,
因為case 1、case 2、case 3很明確的就是要進入同一段程式碼,
所以沒有break是很正常的。
那如果case 1、case 2沒有break,但各自的區段內確有程式碼呢?
例如像以下情形:
其中case 1 與 case 2 都沒有break,編譯器會懷疑你是否是遺忘了加入break,
但你的用意"可能"是如果進到case 1,那麼case 2 和 case 3 也都要執行到,
或者是如果進到case 2 後, case 3 也要執行到。
因此編譯器只會提醒你,並不判斷成錯誤而無法編譯,
但這樣的語意即使是團隊的其他開發者,也可能有一樣的困惑,
到底是忘了加break,還是你別有用意?
這時候你就可以使用[[fallthrogh]]來清晰你的語意。
[[fallthrogh]]用法
主要是用在該case"有敘述"的情況下,卻沒加上break,
編譯器會認為你可能遺漏了break,而出現警告,
這時如果你很確定要往下走,可以加上[[fallthrogh]],警告就會消失。
綠色波浪底線消失了。
只有C++17以上的編譯器才支援這樣的檢查哦,
所以你的編譯器沒出現警告的話,可以檢查一下目前是使用哪個版本。
沒有留言:
張貼留言