下通
Version >= C++ 17
每當 case
在 switch
中結束時,下一個案例的程式碼將被執行。使用’break`語句可以防止最後一個。由於這種所謂的突破行為可能會在沒有預期的情況下引入錯誤,因此多個編譯器和靜態分析器會對此發出警告。
從 C++ 17 開始,引入了一個標準屬性,表示當程式碼要通過時不需要警告。當案件結束時沒有 break
或 [[fallthrough]]
並且至少有一個宣告,編譯器可以安全地發出警告。
switch(input) {
case 2011:
case 2014:
case 2017:
std::cout << "Using modern C++" << std::endl;
[[fallthrough]]; // > No warning
case 1998:
case 2003:
standard = input;
}
有關如何使用 [[fallthrough]]
的更詳細示例,請參閱提案 。