C++ 属性:fallthrough (C++17 起)
< cpp | language | attributes
指示从前一标号直落是有意的,而在发生直落时给出警告的编译器不应诊断它。
语法
[[fallthrough]]
|
|||||||||
解释
仅可应用到空语句以创建直落语句( fallthrough statement ): [[fallthrough]]; 。
直落语句仅可用于 switch 语句中,其中待执行的下个语句是该 switch 语句的带 case 或 default 标号的语句。若直落语句在循环中,则下个(带标号)语句必须是该循环的同一迭代的一部分。
指示从前一标号直落是有意的,而在发生直落时给出警告的编译器不应诊断它。
示例
运行此代码
void f(int n) { void g(), h(), i(); switch (n) { case 1: case 2: g(); [[fallthrough]]; case 3: // 直落时不警告 h(); case 4: // 编译器可在发生直落时警告 if(n < 3) { i(); [[fallthrough]]; // OK } else { return; } case 5: while (false) { [[fallthrough]]; // 非良构:下一语句不是同一迭代的一部分 } case 6: [[fallthrough]]; // 非良构:无后继的 case 或 default 标号 } }