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

linux内核中阶梯判断switch-case的一种罕见用法(连续阶梯值的情况)

最近,我在看linux的内核源码程序,发现了switch-case阶梯判断中一种新用法,具体表现为:case后面跟着连续几个阶梯值,具体表现为:

switch (hw.w) { case 0 ... 1: if (SYN_CAP_MULTIFINGER(priv->capabilities)) num_fingers = hw.w + 2; break; case 2: if (SYN_MODEL_PEN(priv->model_id)) ; /* Nothing, treat a pen as a single finger */ break; case 4 ... 15: if (SYN_CAP_PALMDETECT(priv->capabilities)) finger_width = hw.w; break; }

case 0 ... 1:

内容1;

break;

case 4 ... 15:

内容2;

break;

从上面看好几个连续的阶梯值都运行相同的内容,因此使用了“开始值+空格+...+空格+结束值”这种写法。

之所以记录下来是因为这种写法在我看的linux内核源码中出现的概率特别小,这种写法不常见,但是也是存在的,因此特意写这篇文章记录。

注意:

我又查询了一下AI,发现这种写法只有在GCC扩展中才允许这样写,GCC以及兼容的编译器例如(clang)支持这种写法。这种写法不属于标准:ISO C/C++ 标准不包含该语法,MSVC 等非 GNU 编译器通常不支持。

因此,如果是GCC或者GCC的变种例如arm-linux-gcc是支持这种写法的,如果keil、IAR环境中不能使用这种写法,需要注意。

http://www.cnnetsun.cn/news/2994785.html

相关文章:

  • 简单代码审计
  • 为什么现在所有大厂都在做 CLI ?(附Cluade Code接入飞书CLI教程)
  • 进程、线程、协程与Java虚拟线程
  • Dify、Cursor、Chatbox、Cherry Studio 怎么统一接入:Base URL、模型 ID 和 API Key 验收清单
  • 卵巢早衰备孕还有机会吗
  • 用 Typeoff 口述代码思路:从原始想法到结构化 Markdown
  • AVR单片机内部温度传感器校准指南:从原理到单点/两点校准实践
  • XMEGA A3BU嵌入式开发实战:低功耗、高精度ADC与时钟系统深度优化
  • ATtiny88 SPI与TWI通信接口:寄存器级配置与实战避坑指南
  • 嵌入式安全芯片HAL层开发指南:从CryptoAuthLib原理到STM32实战
  • ATmega单片机端口复用:从GPIO到SPI/ADC/中断的实战配置与冲突解决
  • ATmega164P/324P/644P嵌入式实战:选型、低功耗与汽车级应用
  • CD5283/CD5314电流调节器芯片:从恒流原理到PCB设计实战
  • 备孕期为什么要补充维生素b?高仕星维生素b帮你打好营养基础
  • Curiosity Nano Base硬件平台:标准化连接如何提升嵌入式开发效率
  • ARM7TDMI编程模型与Thumb指令集:嵌入式开发的底层基石
  • 天峰律政代表的合规公关派正在重塑行业服务标准
  • KA Music:酷狗概念版纯净轻量替代品,无损音质免费畅听
  • Go语言的sync.Map条件操作
  • 理解「数据网格」(Data Mesh)及其对数据平台架构的影响
  • 分布式系统一致性算法详解
  • 软件直方图管理化的分布分析
  • khmer开发者手册:贡献代码与扩展功能的完整流程
  • SongGeneration:用AI技术让音乐创作触手可及
  • 从零开始构建高效知识库:OB_Template模板库完整指南
  • Winboat启动故障深度解析:5种常见场景与高效解决方案
  • 构建企业级智能知识引擎:WeKnora RAG架构深度解析与部署实践
  • 3步快速修复BMS锁定电池:Open Battery Information终极指南
  • 终极PT助手:PT-Plugin-Plus浏览器插件完整使用指南
  • 如何为Newton物理引擎定制渲染管线:从原理到实战