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

C++17 fallthrough属性

在C++17中,引入了[[fallthrough]]属性。这个属性主要用于switch语句中,用于告诉编译器,从上一个case标签到下一个case标签的执行是有意为之的,不应该被诊断为错误。

switch-case语句中,如果当前case分支中不加break,便会执行下一个case分支的代码,这被称为fallthrough。然而,这种fallthrough有时会导致错误。为了防止这种情况,编译器在编译时会检测到fallthrough并发出警告。

但是,如果程序员有意让case分支fallthrough,那么编译器的警告就没有用处。在C++17中,通过使用[[fallthrough]]属性,可以告诉编译器这是有意的fallthrough,从而抑制警告。

这是一个例子:

#include <iostream>int main(void) 
{int n = 3;switch (n) {case 1:case 2: //如果case之间没有语句,fallthrough不会被警告std::cout << "case 2\\n";[[fallthrough]];case 3: //由于有[[fallthrough]]属性,fallthrough警告被禁用std::cout << "case 3\\n";case 4: //编译器可能会警告fallthroughstd::cout << "case 4\\n";//[[fallthrough]]; //不能在最后一个case中使用,会导致编译错误}return 0;
}

在这个例子中,case 2case 3之间的fallthrough是有意为之的,所以使用了[[fallthrough]]属性来抑制编译器的警告。

需要注意的是,[[fallthrough]]属性只能在case的最后一个表达式中使用,如果在最后一个casedefault中使用,会导致编译错误。此外,C语言中并没有这个属性,这是C++17特有的。

http://www.lryc.cn/news/221524.html

相关文章:

  • STM32 蜂鸣器介绍 配置 播放音节
  • 多目标最优化的资产配置
  • word图片的标题跑到了图片的上方。
  • electron打包下载资源失败,设置国内镜像
  • 架构漫谈 - 如何设计高性能、高可用、高扩展架构
  • matlab 读写ENVI标准数据
  • 如何对ppt文件设置修改权限?
  • STM32G030F6P6 芯片实验 (二)
  • 时间序列预测模型实战案例(七)(TPA-LSTM)结合TPA注意力机制的LSTM实现多元预测
  • Mysql多表设计
  • 第九章:最新版零基础学习 PYTHON 教程—Python 元组(第五节 -清除元组的5种方式方法)
  • 学习笔记4——JVM运行时数据区梳理
  • Splunk 创建特色 dashboard 报表
  • 如何在校园跑腿系统小程序中构建稳健的订单处理与分配系统?
  • 数据结构与算法—双链表
  • linux继续循环案例测试ping网络,目录下的文件权限循环输出
  • 关于SSP3D复现
  • 在直播系统中使用RTSP协议传递视频
  • Notion汉化
  • echarts有背景的柱状图,鼠标滑过提示信息都是展示背景柱状图的值
  • 华为防火墙基本原理工作方法总结
  • Spring Cloud之多级缓存
  • 融云荣登「2023 年度 PaaS 企业排行榜」
  • YOLOv8轻量化模型:模型轻量化设计 | 轻量级可重参化EfficientRep| 来自YOLOv6思想
  • 【JavaSE】基础笔记 - 类和对象(下)
  • 浅析刚入门Python初学者的注意事项
  • 2023NOIP A层联测26 总结
  • 响应式编程-Project Reactor Mono 介绍
  • R语言实操记录——导出高清图片(矢量图)
  • Apache Doris 开源最顶级基于MPP架构的高性能实时分析数据库