解决warning: this statement may fall through [-Wimplicit-fallthrough=]

2023-11-12

使用switch如果缺少break,gcc编译的时候会报相关的warnning信息,如果是忘记写,这样肯定是有问题的,警告信息可以帮助我们排除隐藏的bug。要消除警告很简单,把break加上就行。

但是有时候,我们的需求就是需要继续向下执行,是故意为之,那么这种warnning应该怎么消除呢?我们需要告诉编译器我们是故意这样写的,让它忽略该问题。

#ifndef __has_cpp_attribute
#define __has_cpp_attribute(x) 0
#endif

#ifndef __has_c_attribute
#define __has_c_attribute(x) 0
#endif

#ifndef __has_attribute
#define __has_attribute(x) 0
#endif
 
#if __has_cpp_attribute(fallthrough) || __has_c_attribute(fallthrough)
#define FALLTHROUGH [[fallthrough]]
#elif __has_attribute(fallthrough)
#define FALLTHROUGH __attribute__((fallthrough))
// Note, there could be more branches here, like using `[[gsl::suppress]]` for MSVC
#else
#define FALLTHROUGH
#endif

// example 
void example(int cond) { 
  switch (cond) { 
  case 0:
    dosomething(); 
    FALLTHROUGH;  
  case 1:
    myfun();
    break;
  default: 
    break;
  }
}

C++17 provides a standard way to suppress the ‘-Wimplicit-fallthrough’ warning using [[fallthrough]]; instead of the GNU attribute.

In C++11 or C++14 users can use [[gnu::fallthrough]];, which is a GNU extension. Instead of the these attributes, it is also possible to add a fallthrough comment 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

解决warning: this statement may fall through [-Wimplicit-fallthrough=] 的相关文章

随机推荐

  • 假设检验(一):假设检验总体概念

    写在前面的话 最近在学习统计学 这里仅仅是一些学习笔记 方便我自己回顾以及供大家参考 对于统计学我只是初学者 有什么错误之处欢迎大家指出 共同学习 共同进步 一 总体概念 假设检验是一种统计推断方法 其主要用来判断样本与样本 样本与总体之间
  • 使用hiredis实现publish和subscribe

    publish include
  • 提权_Linux提权_suid

    1 MSF连接目标机 生成msf后门 上传到目标机 开启监听 等待运行 gt msfvenom p linux x64 meterpreter reverse tcp LHOST 0 0 0 0 LPORT 6666 i 3 f elf o
  • SylixOS lite Extension工程开发手册

    1 适用范围 本文档介绍了SylixOS Lite版本应用工程的开发流程 适用于使用SylixOS Lite版本开发的相关工程师 2 新建Extension工程 1 选择创建Extension工程 在Project Explorer栏中点击
  • iview表格全选禁止选中设置

    业务需求 表格里面一键全选功能 但是有些数据可能不满足全选的需求 当点击全选时 不满足条件的默认不认其选中 代码如下
  • 微信小程序切片-喝水了关于我们前端制作演示

    微信小程序切片 喝水了关于我们前端制作演示 外部背景的使用 文字识别的使用 复制粘贴设置 边框的设置方法 原始高清播放文件 链接 https pan baidu com s 1nOeOoCj1jfP5rQOg UaQDQ 提取码 32lt
  • Mysql报错 Error querying database. Cause java.sql.SQLSyntaxErrorException

    今天写一个查询功能的时候 出现了一个错误 当我写好后端接口 准备去前端掉用的时候出现了如下错误 Errorqueryingdatabase Cause java sql SQLSyntaxErrorException Youhaveaner
  • leetcode——第55题——跳跃游戏

    题目 给定一个非负整数数组 nums 你最初位于数组的 第一个下标 数组中的每个元素代表你在该位置可以跳跃的最大长度 判断你是否能够到达最后一个下标 class Solution public bool canJump vector
  • XboxOne的kinect在Unity上的开发——开始界面

    好的 欢迎大家来看这个系列的第二部分的内容 这一次呢 我们就直接进入主题 开发切水果游戏本身 这次的切水果的demo呢 我们选择使用ugui来制作 因为ugui相对于NGUI的各种优势 让我们选择了ugui 关于这些呢 大家可以参考我的另一
  • 漏洞扫描是什么?怎么做?

    漏洞扫描 漏洞扫描是指基于漏洞数据库 通过扫描等手段对指定的远程或者本地计算机系统的安全脆弱性进行检测 发现可利用漏洞的一种安全检测 渗透攻击 行为 漏洞扫描按扫描器所处位置 可分为内网扫描和外网扫描 而按照工作方式 又可以将漏洞扫描分为远
  • 【SpringBoot项目实战】图片压缩包上传、解压、存储等等一套流程教学

    SpringBoot项目实战 图片压缩包上传 解压 存储等等一套流程教学 前言 一 压缩包上传 1 接口实现 2 获取压缩包的文件名和文件路径 二 压缩包解压并保存 1 处理压缩包文件方法 解压缩步骤 2 接口中实现处理压缩包 三 总结 前
  • HTML在工作中的使用

    本文是在学习HTML的时候 心血来潮尝试的做法 纯属瞎玩 不可当真 示例 工作中编辑邮件 在管理系统上进行任务编辑 描述时 都可能会使用到HTML的简单知识 有一些简单的标签可以帮助我们更好的完成工作 比如字体加粗 换行等 比如我在办公系统
  • python使用装饰器记录方法耗时

    思路 python使用修饰器记录方法耗时 目的是每当方法执行完后 可以记录该方法耗时 而不需要在每个方法的执行前后 去创建一个临时变量 来记录耗时 方式一 不推荐 在每个方法的执行前后 去创建一个临时变量 来记录耗时 代码如下 缺点在于 如
  • 爱好高科技之人脸识别模块

    前段时间看到一款性价比很不错的人脸识别模组 2个关键指标引起了我极大的兴趣 1 99 的识别通过率 误识率低于百万分之一 2 双目摄像头 活体检测 于是买了几个 结合离线语音模块 两者通过串口进行一问一答通信 人机交互部分通过语音和OLED
  • 运行vue-admin-template和vue-element-admin及可能问题点解决

    系统 windows10 64位 需求 安装node js git客户端 ssh公钥设定好 安装node sass 前提 安装好node js 配置好环境 安装好的nodejs文件夹下如下图所示 其中node global和node cac
  • Java21天打卡Day8-break

    break和continue break 表示跳出当前层循环 continue 表示跳出本次循环 进入下一次循环 import com sun org apache xerces internal util SynchronizedSymb
  • vue 项目放弃“tui-editor“ “1.3.3“,

    从官网https github com PanJiaChen vue element admin下载的版本带有 tui editor 版本1 3 3 在编译时会遇到如下问题 error An unexpected error occurre
  • 使用 X2MindSpore 迁移 Pytorch 训练脚本mobileNet支持分布式训练

    简介 MindSpore是华为昇腾开发的深度学习框架 旨在提供端边云全场景的AI框架 Pytorch是由Facebook推出的AI框架 本教程使用MindStudio中的X2MindSpore功能自动将Pytorch脚本转换为MindSpo
  • 整数的逆序数

    本题要求实现一个求整数的逆序数的简单函数 函数接口定义 int reverse int number 其中函数reverse须返回用户传入的整型number的逆序数 include
  • 解决warning: this statement may fall through [-Wimplicit-fallthrough=]

    使用switch如果缺少break gcc编译的时候会报相关的warnning信息 如果是忘记写 这样肯定是有问题的 警告信息可以帮助我们排除隐藏的bug 要消除警告很简单 把break加上就行 但是有时候 我们的需求就是需要继续向下执行