问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

避免switch中未显式使用break警告

创作时间:
作者:
@小白创作中心

避免switch中未显式使用break警告

引用
CSDN
1.
https://blog.csdn.net/yifei99/article/details/140928510

在C和C++语言中,switch语句中的每个case标签通常会自动“贯穿”到下一个case标签,除非使用break语句显式终止。然而,有时候开发人员希望在不显式使用break的情况下,有意地允许程序继续执行下一个case标签中的代码。本文将介绍如何使用fallthrough宏定义来明确表达这种意图,并避免编译器产生由于未使用break而引起的警告。

fallthrough宏定义是一个编译器特性,它用于在代码switch语句中标记“落入”(fallthrough)行为。在C和C++语言中,switch语句中的每个case标签通常会自动“贯穿”到下一个case标签,除非使用break语句显式终止。然而,有时候开发人员希望在不显式使用break的情况下,有意地允许程序继续执行下一个case标签中的代码。fallthrough宏的定义允许开发人员在代码中明确指定这种意图。

//Linux kernel: include\linux\compiler_attributes.h
#if __has_attribute(__fallthrough__)
# define fallthrough                    __attribute__((__fallthrough__))
#else
# define fallthrough                    do {} while (0)  /* fallthrough */
#endif

在给定的宏定义中,fallthrough也许是一个编译器特定的属性(attribute)(或者是一个注解(annotation)),该属性告诉编译器如果在switch语句中使用了fallthrough宏,就不要发出“未显式使用break”的警告。这样开发人员能够明确表达他们的意图,并避免编译器产生由于未使用break而引起的警告。 使用fallthrough宏定义,开发人员可以在switch语句的case标签之间使用注释,以表明有意的落入行为。例如:

switch (value) {
    case 1:
        // 执行一些操作
        fallthrough;
    case 2:
        // 继续执行一些操作
        break;
    default:
        // 执行其他操作
        break;
}

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号