下通
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]]
的更详细示例,请参阅提案 。