当前位置: 首页 > news >正文

【C语言】—— __attribute__((fallthrough))

__attribute__((fallthrough)) 是一个在编译器中使用的特性,用于指示在 switch 语句中的 case 标签中故意省略 break 语句时的意图。它告诉编译器,故意省略 break 是有意为之,而不是出现了错误或遗漏。

当使用 switch 语句时,通常每个 case 标签都会以 break 结束,以确保在匹配到一个 case 后,程序会跳出 switch 语句。然而,有时候我们可能希望在某些情况下,多个 case 标签共享相同的代码块,而不是每个 case 都有自己的代码块。

这就是 __attribute__((fallthrough)) 的作用。当我们在一个 case 标签中故意省略 break 语句时,可以使用该特性来告诉编译器,这个省略是有意为之的,以避免编译器给出警告。

下面是一个示例代码,展示了如何使用 attribute((fallthrough)) :

#include <stdio.h>int main(int argc, char *argv[])
{int choice = 2;switch (choice){case 1:printf("This is case 1.\n");break;case 2:printf("This is case 2.\n");__attribute__((fallthrough));case 3:printf("This is case 3.\n");break;default:printf("Invalid choice.\n");break;}return 0;
}

在上面的代码中,当 choice 的值为 2 时, case 2 中的 printf 语句会执行,然后通过 __attribute__((fallthrough)) 告诉编译器继续执行下一个 case ,即 case 3 中的 printf 语句。

如果没有使用 __attribute__((fallthrough)) ,可能编译器会给出一个警告,因为通常情况下,我们希望每个 case 都以 break 结束。

  • 注意, attribute((fallthrough)) 是特定于编译器的语法,不是标准 C 语言的一部分。因此,它的使用可能在不同的编译器上有所不同。在使用时,应该查阅相应的编译器文档以确保正确使用该特性。
http://www.lryc.cn/news/102919.html

相关文章:

  • 【深度学习】生成对抗网络Generative Adversarial Nets
  • 【深度学习】从现代C++中的开始:卷积
  • 金融数学方法:蒙特卡洛模拟
  • vue 文件扩展名中 esm 、common 、global 以及 mini 、 dev 、prod 、runtime 的含义
  • 微服务契约测试框架Pact-Python实战
  • Linux 给用户 赋某个文件夹操作的权限(实现三权分立)
  • 【C++入门到精通】C++入门 —— 类和对象(初始化列表、Static成员、友元、内部类、匿名对象)
  • “深入理解Spring Boot:从入门到高级应用“
  • Apache Spark 的基本概念和在大数据分析中的应用
  • Debian LNMP架构的简单配置使用
  • CAN转EtherNet/IP网关can协议破解服务
  • 最适合新手的Java项目/SpringBoot+SSM项目《苍穹外卖》/项目实战、笔记(超详细、新手)[持续更新……]
  • CloudDriver一款将各种网盘云盘挂在到电脑本地变成本地磁盘的工具 教程
  • 行为型模式之中介者模式
  • BPMNJS插件使用及汉化(Activiti绘制流程图插件)
  • STM32使用HAL库中外设初始化MSP回调机制及中断回调机制详解
  • Hutool工具类FileUtil----文件(夹)创建、删除、添加数据
  • Flink - souce算子
  • 使用vue creat搭建项目
  • 面试题 -- 基础知识
  • Zabbix分布式监控快速入门
  • 基于Spring包扫描工具和MybatisPlus逆向工程组件的数据表自动同步机制
  • leetcode 面试题 0106.字符串压缩
  • 三、Spring源码-实例化
  • 算法的法律框架:预测未来的关键趋势
  • Ubuntu Server版 之 共享文件 samba和NFS 两种方法
  • 实时协作:团队效率倍增的关键
  • 电脑选睡眠、休眠还是关机?
  • 算法通关村第三关——不简单的数组增删改查
  • 【Linux】动静态库