2022年7月26日 星期二

[C++] switch case : fallthrogh 下通 怎麼用?

大家應該都滿常使用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以上的編譯器才支援這樣的檢查哦,

所以你的編譯器沒出現警告的話,可以檢查一下目前是使用哪個版本。

沒有留言:

張貼留言

社會新鮮人如何投資?

我的觀點是,在 沒有很多 本錢 的情況下, 別寄望每個月幾千元放到股票或者最近很夯的高股息ETF就能讓你致富, 先投資自己,讓自己的本業收入提高吧。