下通

Version >= C++ 17

每當 caseswitch 中結束時,下一個案例的程式碼將被執行。使用’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]] 的更詳細示例,請參閱提案