const、volatile、restrict 的语义与误区 | C语言

本章覆盖:const 表达通过特定左值不可修改;volatile 用于可能被实现之外因素改变或具有特殊副作用的访问语义;volatile 常见于内存映射 I/O、信号/中断相关对象;volatile 不提供原子性,也不是通用线程同步方案;restrict 用于表达指针别名约束并帮助优化;违反 restrict 契约可能导致未定义行为。

本章知识点

  • const 表达通过特定左值不可修改
  • volatile 用于可能被实现之外因素改变或具有特殊副作用的访问语义
  • volatile 常见于内存映射 I/O、信号/中断相关对象
  • volatile 不提供原子性,也不是通用线程同步方案
  • restrict 用于表达指针别名约束并帮助优化
  • 违反 restrict 契约可能导致未定义行为