programing

C에서 명시적 폴스루를 하는 방법

megabox 2023. 10. 21. 10:19
반응형

C에서 명시적 폴스루를 하는 방법

새로운 버전의 gcc는 다음을 제공합니다.Wimplicit-fallthrough, 대부분의 스위치 문을 가지는 것이 좋습니다.하지만 모든 케이스 문에서 폴스루를 허용하고 싶은 스위치 문이 하나 있습니다.

명백한 실패를 할 수 있는 방법이 있습니까?저는 다음과 같이 컴파일하는 것을 피하고 싶습니다.Wno-implicit-fallthrough이 파일에 대해서는

편집: 컴파일러 스위치나 프래그마를 통해 경고를 끄지 않고 (가능하다면) 명시적으로 폴을 수행할 수 있는 방법을 찾고 있습니다.

쓰임

switch (condition) {
    case 1:
        printf("1 ");
        __attribute__ ((fallthrough));
    case 2:
        printf("2 ");
        __attribute__ ((fallthrough));
    case 3:
        printf("3\n");
        break;
}

GCC는 마법 댓글을 통해 추락합니다.

당신이 할 수 있다면 이것을 사용해서는 안 됩니다. 그것은 미친 짓이지만, 아는 것이 좋습니다.

int main(int argc, char **argv) {
    (void)argv;
    switch (argc) {
        case 0:
            argc = 1;
            // fall through
        case 1:
            argc = 2;
    };
}

는 다음을 사용하여 GCC 7.4.0에 대한 경고를 방지합니다.

gcc -Wall -Wextra main.c

man gcc는 다음의 값에 따라 주석이 어떻게 다르게 인식되거나 인식되지 않을 수 있는지 설명합니다.

-Wimplicit-fallthrough=n

C++17[[fallthrough]]기여하다

C++17은 이에 대한 표준화된 구문을 얻었습니다. GCC 7, -Wimplicit-fallthrough warning, and portable to clearing?

GCC 진단 프래그마스를 사용하여 소스 파일 또는 소스 파일의 일부에 대해 해당 경고를 사용하지 않도록 설정할 수 있습니다.파일 맨 위에 이 내용을 입력해 보십시오.

#pragma GCC diagnostic ignored "-Wimplicit-fallthrough"

언급URL : https://stackoverflow.com/questions/44511436/how-to-do-an-explicit-fall-through-in-c

반응형