C attribute: fallthrough (since C23)
From cppreference.net
<
c
|
language
|
attributes
表明从前一个 case 标签的贯穿行为是故意的,不应被会对贯穿行为发出警告的编译器诊断出来。
目录 |
语法
[[
fallthrough
]]
[[
__fallthrough__
]]
|
|||||||||
说明
仅可在 属性声明 中使用,用于创建 fallthrough声明 ( [ [ fallthrough ] ] ; )。
fallthrough 声明仅可用于
switch
语句中,且下一个待执行的块项(语句、声明或标签)必须为该 switch 语句中带有
case
或
default
标签的语句。
表明从前一个 case 标签的直落行为是故意的,不应被会对直落行为发出警告的编译器诊断出来。
示例
运行此代码
#include <stdbool.h> void g(void) {} void h(void) {} void i(void) {} void f(int n) { switch (n) { case 1: case 2: g(); [[fallthrough]]; case 3: // 直落不会产生警告 h(); case 4: // 编译器可能对直落发出警告 if(n < 3) { i(); [[fallthrough]]; // 正确 } else { return; } case 5: while (false) { [[fallthrough]]; // 不合规:没有后续的 case 或 default 标签 } case 6: [[fallthrough]]; // 不合规:没有后续的 case 或 default 标签 } } int main(void) {}
参见
|
C++ 文档
关于
fallthrough
|