volatile 和 register #
- volatile 关键字主要是用来防止编译优化,变量读取时,从内存中读取变量的值,而不是从寄存器中读取变量的值。
- register 告诉编译器,变量存储在寄存器中。
| 对比项 | register | volatile |
|---|---|---|
| 目的 | 提高访问速度 | 禁止编译器优化访问 |
| 是否影响优化 | 希望优化 | 阻止某些优化 |
| 是否一定生效 | 否,仅建议 | 是,编译器必须遵守语义 |
| 是否还能取地址 | ❌ 不允许 | ✅ 可以 |
| 是否线程安全 | ❌ | ❌ |
| 常见用途 | 现代代码几乎不用 | 硬件寄存器、中断标志、内存映射 I/O 等 |
| 现代使用情况 | 基本已淘汰 | 仍然广泛使用,但不能替代同步原语 |
内联函数 #
- inline 函数是指 在函数调用的时候,编译器会直接将函数的代码复制到调用点,从而提高程序的执行效率。
- 在C++中,inline 函数的声明和定义可以放在同一个文件中,也可以放在不同的文件中。
- 类成员的函数默认是 inline 的;也可以显式的声明内联函数
inline void 类名::函数()
