news 2026/6/24 2:10:47

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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环境中不能使用这种写法,需要注意。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/24 2:10:00

简单代码审计

file request.files[file]# 从请求参数或文件名获取保存路径filename request.form.get(filename) or file.filename# 路径穿越漏洞!save_path os.path.join(UPLOAD_FOLDER, filename)# 创建目录save_dir os.path.dirname(save_path)filename可控(通…

作者头像 李华
网站建设 2026/6/24 2:08:47

为什么现在所有大厂都在做 CLI ?(附Cluade Code接入飞书CLI教程)

最近飞书开源了自家官方 CLI 工具,简单来说,开源了一款飞书/Lark 开放平台命令行工具,它可以让人类和AI Agent 都能在终端中操作飞书。覆盖了消息、文档、多维表格、电子表格、日历、邮箱、任务、会议等核心业务域,提供200命令及1…

作者头像 李华
网站建设 2026/6/24 2:06:47

进程、线程、协程与Java虚拟线程

进程、线程、协程与Java虚拟线程 Java 开发者每天都在用线程池、CompletableFuture、Async,但底层到底是怎么回事?为什么 Java 21 的虚拟线程被称为「革命性」特性? 本文从 OS 层面一路讲回 JVM,用三层递进的方式串起进程、线程…

作者头像 李华
网站建设 2026/6/24 2:02:57

卵巢早衰备孕还有机会吗

卵巢早衰备孕还有机会吗?辅酶Q10的调理思路分享小雅今年32岁,例假一直不太规律,去年体检时AMH值只有0.8,医生说卵巢储备功能有下降趋势。拿到报告的那一刻,她哭了很久:"我才32岁,怎么就卵巢…

作者头像 李华
网站建设 2026/6/24 2:02:41

用 Typeoff 口述代码思路:从原始想法到结构化 Markdown

我用语音口述写完了上周所有的 PR 描述和 Bug 复盘——一份给开发者的 Typeoff 实战工作流利益相关声明: 本人 Typeoff 个人用户,使用约一个月。本文非官方稿件、无任何商业合作。Typeoff 功能描述以官方文档为准。文中提到的 Cursor、Claude Code、Wispr Flow 等均为公开可查的…

作者头像 李华