C attribute: fallthrough (since C23)
이전 case 레이블에서의 fall through가 의도적이며, fallthrough에 대해 경고하는 컴파일러에 의해 진단되어서는 안 됨을 나타냅니다.
목차 |
구문
[[
fallthrough
]]
[[
__fallthrough__
]]
|
|||||||||
설명
오직 속성 선언 에서만 사용되어 폴스루 선언 을 생성할 수 있습니다 ( [ [ fallthrough ] ] ; ).
fallthrough 선언은 오직
switch
문 내에서만 사용될 수 있으며, 이때 다음으로 만나게 될 블록 항목(문, 선언, 또는 레이블)이 해당 switch 문의
case
또는
default
레이블을 가진 문이어야 합니다.
이전 case 레이블에서의 fall through가 의도적이며, fallthrough에 대해 경고하는 컴파일러에 의해 진단되어서는 안 됨을 나타냅니다.
예제
#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: // fallthrough에 대한 경고 없음 h(); case 4: // 컴파일러가 fallthrough에 대해 경고할 수 있음 if(n < 3) { i(); [[fallthrough]]; // 허용됨 } else { return; } case 5: while (false) { [[fallthrough]]; // 잘못된 형식: 후속 case 또는 default 레이블 없음 } case 6: [[fallthrough]]; // 잘못된 형식: 후속 case 또는 default 레이블 없음 } } int main(void) {}
참고 항목
|
C++ documentation
for
fallthrough
|