Browse Source

raw: 移除未学完的 volatile 记录(流程未走完,仅保留模板)

OpenCode 1 month ago
parent
commit
246884bb6b
1 changed files with 0 additions and 32 deletions
  1. 0 32
      X-Knowledge-Base/raw/面试八股/volatile.md

+ 0 - 32
X-Knowledge-Base/raw/面试八股/volatile.md

@@ -1,32 +0,0 @@
-# volatile
-
-## 判别规则(核心)
-
-- 变量可能被"程序控制之外的上下文"(中断 / 硬件 / 其他线程)修改 → 加 `volatile`
-- 否则 → 不加
-
-## 抽象描述
-
-告诉编译器:这个变量的值可能被程序控制之外的地方改变,读它时不要缓存优化、每次都真读。
-
-## 易混对比
-
-| volatile | const | 关键区别 |
-|----------|-------|---------|
-| 值可能外部改变 | 值不应被修改 | volatile 禁缓存优化,const 允许优化 |
-| 用于中断/硬件/多线程共享变量 | 用于只读数据 | 语义相反但可共存 |
-| `const volatile` 合法 | 只读硬件寄存器场景 | 既只读又可能被硬件改变 |
-
-## 变体验证(3 题,全过=学会)
-
-1. 中断里置位、主循环读取的全局标志 → **要**。依据:中断是程序控制外上下文,编译器不知道它改
-2. `const volatile uint32_t *reg = ...` 合法吗? → **合法**。依据:只读硬件寄存器(如状态寄存器)
-3. 纯软件状态机变量,全部修改都在同一函数 → **不要**。依据:无外部上下文改写
-
-## 口述要点
-
-"volatile 告诉编译器别对这个变量做缓存优化,因为它可能被中断、硬件或别的线程修改。我项目里光敏传感器中断里更新的标志就加了 volatile,否则主循环可能读到缓存里的旧值。"
-
-## 学习日期
-
-2026-08-02